Проблемы с получением рабочего каталога - PullRequest
1 голос
/ 14 декабря 2010

Вот как я пытаюсь получить текущий рабочий каталог:

    char* ch;
    if( (ch = _getcwd( NULL, 0 )) == NULL )
    {
        cout << "Could not get working directory!" << endl;
    }
    // skonvertujme char* na string, s tym sa nizsie bude lahsie pracovat
    stringstream ss;
    string workingDirectory;
    ss << ch;
    ss >> workingDirectory;

    cout << workingDirectory << endl;
    cin.get();
    cin.get();

Что выводит на печать:

C:\Users\Richard\Documents\Visual

Вместо реального рабочего каталога:

C:\Users\Richard\Documents\Visual Studio 2010\Projects\Client\Debug

Похоже, что ti режет все после пробела.

Как правильно получить рабочий каталог, даже если в пути есть пробелы?

Ответы [ 4 ]

4 голосов
/ 14 декабря 2010

Оператор >> останавливается на первом пробеле. Вместо манипуляций с потоком строк попробуйте

string workingDirectory(ch);
4 голосов
/ 14 декабря 2010

Просто замените это:

stringstream ss;
string workingDirectory;
ss << ch;
ss >> workingDirectory;

на это:

string workingDirectory(ch);
3 голосов
/ 14 декабря 2010

Использование getline(ss, workingDirectory)

Причина, по которой это происходит, заключается в том, что оператор << в stringstream прекращает чтение, когда сталкивается с пробелами.

1 голос
/ 15 декабря 2010

Если вы действительно хотите использовать свое решение, которое является избыточным, используйте noskipws io-манипулятор, например, так:

ss >> noskipws >> workingDirectory;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...