我使用此代碼在MSVC++ 2010實現用戶輸入迴路:使用std :: WCIN讀wchar_t的總是給人LF(10,是0xA)
int wmain(int argc, wchar_t* argv[])
{
vector<wstring> arguments;
wstring userinput;
wchar_t userabort;
do
{
wcout << L"Please type param #" << argc++ << L":" << endl;
wcin >> userinput;
arguments.push_back(userinput);
userinput.clear();
wcout << L"Type 'y' to input next param, 'n' to start program:" << endl;
wcin >> userabort;
wcout << L"Userabort: " << userabort << " (" << int(userabort) << ")" << endl;
}
while (userabort == L'y' || userabort == L'Y'
|| userabort == L'j' || userabort == L'J');
return 1;
}
在我的項目,這個作品之一完美無瑕(在Debug和Release配置中)。在我的另一個項目中,這個非常相同的代碼(也僅限於wmain
中的代碼)表現得很奇怪(在兩種配置中都是如此):在「輸入'y'輸入下一個參數」之後它不會停止等待我的輸入,但而是立即從流中讀取換行字符。
我甚至試過wcin >> skipws >> userabort;
但結果相同。我不知道可能會導致什麼。它可能是一些編譯器設置或導入文件的結果嗎?或者,也許是因爲按返回發送userinput
wstring到程序?任何幫助讚賞。
修正了它,非常感謝。你知道爲什麼嗎? –
@Felix我想我明白了。它與如何在'operator >>'完成重載解析有關。我在答案中添加了信息。 – Sven