2012-08-07 78 views
10

¿Alguien puede ayudar con los siguientes? Supongamos que tengo un QString con una ruta de archivo almacenado de un determinado archivo, quiero reemplazar los / (barras) de ella con \\ (barras invertidas dobles) Traté:Cómo reemplazar '/' con '\' usando QString replace()?

mystring.replace("/","\\"); 

Pero sólo se pone una sola \ en lugar de \\

cuerdas antes de la sustitución: D:/myfiles/abc.zip

cuerdas después de la sustitución: D:\myfiles\abc.zip

Expec Ted cadena: D:\\myfiles\\abc.zip

+0

No es muy seguro, pero por lo que me acuerdo QFile/QFileInfo felices para trabajar con cualquier separador de directorio – friendzis

+0

Me sorprende esto realmente compila. ¿No estás escapando del '' 'cerrando con el tercer' \\ '? ¿Y qué idioma usas? C++? – CodesInChaos

+0

Pero adb necesita '\\': p Estoy haciendo una herramienta adb automatizada :) –

Respuesta

23

Necesita utilizar:

mystring.replace("/","\\\\"); 

El compilador utiliza \ como un carácter de escape en cadenas (por cosas como \t, \n o \r) para que \\ que realmente se convirtió en \. Si necesita dos barras diagonales inversas, debe comenzar con cuatro.

0

1) ¿Por qué desea reemplazarlos? Las barras diagonales AFAIR también funcionan en operaciones de archivos (independientemente del sistema operativo).
2) ¿Intentó leer los documentos? Por ejemplo, ¿por qué \\ produce una sola barra diagonal inversa?

+0

barras diagonales no funcionan cuando se realizan operaciones de adb en un teléfono con Android, por lo tanto necesitan ser reemplazados por barras diagonales inversas dobles (incluso una sola barra invertida no funciona: p) –

+0

Podrías haber leído la explicación publicada por paxdiablo arriba en los documentos, que describe claramente el uso de '' \\ 'solo como un carácter de escape. Cada personaje de escape escapa de UN personaje que lo sigue. –

18

Si desea convertir a formato Windows caminos, simplemente podría utilizar QDir::toNativeSeparators():

qDebug() << QDir::toNativeSeparators("c:/windows/path"); // Prints "c:\windows\path" 
Cuestiones relacionadas