【发布时间】:2011-08-26 13:41:07
【问题描述】:
我在 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 中的代码)表现得很奇怪(在两种配置中也是如此):它不会停止等待我在“键入'y'以输入下一个参数”之后的输入,而是立即从流中读取换行符。
我什至尝试过wcin >> skipws >> userabort;,但结果相同。我根本不知道是什么原因造成的。可能是某些编译器设置或导入文件的结果吗?或者它可能是按 return 将userinput wstring 发送到程序的结果?任何帮助表示赞赏。
【问题讨论】:
标签: c++ visual-studio-2010 visual-c++ user-input cin