2012-08-07 12 views
10

Czy ktoś może pomóc w śledzeniu? Załóżmy, że mam QString z filePath przechowywane pewnego pliku, chcę wymienić / (ukośniki) od niego z \\ (podwójne ukośniki) Próbowałem:Jak zamienić "/" na "\" używając QString replace()?

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

Ale to tylko stawia pojedynczy \ zamiast \\

String przed wymianą: D:/myfiles/abc.zip

String po wymianie: D:\myfiles\abc.zip

Expec ted ciąg: D:\\myfiles\\abc.zip

+0

Nie pewien, ale o ile pamiętam QFile/QFileInfo szczęśliwie pracować z dowolnym separatorem katalogów – friendzis

+0

Dziwię to faktycznie kompiluje. Ty nie uciekając zamykanie '' "z trzecim' \\ 'A jakiego języka używasz C++ – CodesInChaos

+0

Ale ADB potrzeby«\\»:? P Robię zautomatyzowane narzędzia adb :) –

Odpowiedz

23

Trzeba użyć:

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

Kompilator korzysta \ jako znak ucieczki w ciągi (na takie rzeczy jak \t, \n lub \r), tak że \\ faktycznie przekształcony \. Jeśli potrzebujesz dwóch odwrotnych ukośników, musisz zacząć od czterech.

0

1) Dlaczego chcesz je zastąpić, AFAIR ukośniki pracę w operacji na plikach zbyt (niezależnie od systemu operacyjnego).
2) Czy próbowałeś czytać dokumenty - na przykład dlaczego \\ powoduje pojedynczy pojedynczy ukośnik odwrotny?

+0

przednie ukośniki nie działają podczas operacji adb w telefonie z Androidem, dlatego muszą być zastąpione podwójnymi ukośnikami (nawet pojedynczy ukośnik odwrotny nie działa: p) –

+0

Mogłeś przeczytać wyjaśnienie opublikowane przez Paxdiablo powyżej w dokumentach, wyraźnie opisuje użycie pojedynczego '\\' jako znaku ucieczki. Każdy znak ucieczki wymyka się po JEDNEJ postaci. –

18

Jeśli chcesz przekonwertować do formatu ścieżki systemu Windows, można po prostu użyć QDir::toNativeSeparators():

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