2010-12-14 138 views
1

这是我想获得当前的工作目录:麻烦的工作目录

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

>>操作员停在第一个空格处。取而代之的是stringstream的操纵尝试

string workingDirectory(ch); 
4

只需更换这一点:

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

与此:

string workingDirectory(ch); 
3

使用getline(ss, workingDirectory)

发生的是,<<运营商stringstream停止,当它遇到的空白读书的原因。

+1

为什么使用字符串流呢? – 2010-12-14 21:03:18

+0

是的,你是对的。 – 2010-12-14 21:21:28

1

如果你真的想用您的解决方案 - 这是矫枉过正 - 使用noskipws IO-机械手就像这样:

ss >> noskipws >> workingDirectory;