2010-12-14 16 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停止中<<オペレータが読んでいることである

string workingDirectory(ch); 
3

使用getline(ss, workingDirectory)

:これで

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

を。

+1

はなぜですべての文字列ストリームを使うのか? –

+0

はい、そうです。 –

1

を試みるので、同じようnoskipws IO-マニピュレータを使用します。

ss >> noskipws >> workingDirectory; 
関連する問題