Я использую этот код в 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;
}
В одном из моих проектов это работает безупречно (как в конфигурации Debug, так и в Release).В другом из моих проектов этот тот же самый код (также как и только код в wmain
) ведет себя странно (также в обеих конфигурациях): он не останавливает ожидание моего ввода после «Типа y» для ввода следующего параметра », но вместо этого сразу читает символ перевода строки из потока.
Я даже пытался wcin >> skipws >> userabort;
, но тот же результат.Я не знаю, что вообще может быть причиной этого.Может ли это быть результатом какой-то настройки компилятора или импортированного файла?Или это может быть результатом нажатия return для отправки userinput
wstring в программу?Любая помощь приветствуется.