无法获得工作目录

时间:2010-12-14 20:52:21

标签: c++ visual-c++

这就是我试图获取当前工作目录的方式:

    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 个答案:

答案 0 :(得分:4)

只需替换它:

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

用这个:

string workingDirectory(ch);

答案 1 :(得分:4)

>>运算符停在第一个空格处。而不是字符串流操作尝试

string workingDirectory(ch);

答案 2 :(得分:3)

使用getline(ss, workingDirectory)

发生这种情况的原因是<<中的stringstream运算符在遇到空格时停止读取。

答案 3 :(得分:1)

如果你真的想使用你的解决方案 - 这有点矫枉过正 - 请使用noskipws io-manipulator,如下所示:

ss >> noskipws >> workingDirectory;