Я столкнулся с интересной проблемой.У меня есть следующий код:
cout << "\nFILE";
cout << "\tLocation:" << file.location << endl;
cout << "\tLocation (c_str()): " << file.location.c_str() << endl;
где местоположение задается функцией, которая находит местоположение файла в файле в формате
DRIVE: \ dir1 \ dir2 ... \ filename.extension
Например, функция успешно установит file.location в
C: \ Documents and Settings \ admin \ testfile.foo
Однако происходит самое странное.Он выводит что-то похожее на это:
FILE
Расположение: C: \ Documents and Settings \ admin \ testfile.foo
Расположение (c_str ()): C: \ Documents
Обратите внимание на отсутствие оставшегося пути к файлу.Будучи проницательным программистом, я решил проверить абсолютные пути.Я физически установил строку file.location в
C: \\ Documents and Settings \\ admin \\ testfile.foo
, и соответствующий вывод был
ФАЙЛ
Расположение: C: \ Documents and Settings \ admin \ testfile.foo
Расположение (c_str ()): C: \ Documents and Settings \ admin \ testfile.foo
как и ожидалось.Затем я протестировал
C: \ Documents and Settings \ admin \ testfile.foo
, и на выходе было
FILE
Местоположение: C: документы и настройкиadmintestfile.foo
Местоположение (c_str ()): C: Документы и настройкиadmintestfile.foo
также ожидается.
Я не могу на всю жизнь понять, что может пойти не так.Путь к файлу четко указан в самой строке, почему он изменился бы только в этом случае?