这就是我试图获取当前工作目录的方式:
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在空格之后切割了所有东西。
即使路径中有空格,我怎样才能正确获取工作目录?
答案 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;