我在 MSVC++2010 中使用此代码来实现用户输入循环:
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;
}
在我的一个项目中,这完美无缺(在调试和发布配置中)。在我的另一个项目中,这个非常相同的代码(也仅作为 中的代码wmain
)表现得很奇怪(在两种配置中也是如此):它不会停止在“Type 'y' to input next param”之后等待我的输入,而是立即从流中读取换行符。
我什至尝试过wcin >> skipws >> userabort;
但结果相同。我根本不知道是什么原因造成的。可能是某些编译器设置或导入文件的结果吗?或者它可能是按回车将userinput
wstring 发送到程序的结果?任何帮助表示赞赏。