这是一个非常简单的应用程序来说明我遇到的问题。
#include <QTextStream>
int main()
{
QTextStream cin(stdin);
QTextStream cout(stdout);
QString test;
cout << "Enter a value: ";
cout.flush();
cin >> test;
cout << "Enter another value: ";
cout.flush();
test = cin.readLine();
cout << test;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望执行暂停并等待输入test = cin.readline();,但事实并非如此。如果我删除cin >> test;然后它暂停。
为什么这段代码的行为是这样的,我如何获得我想要的行为?
我有以下代码:
int a , b , sum;
cin>>a>>b;
sum=a+b;
cout<<sum;
Run Code Online (Sandbox Code Playgroud)
我完全知道你不能将浮点值存储在整数中.所以在我的程序的第一次运行期间:
10 2.5
12
我得到预期的输出12,因为忽略了2.5的小数部分
在第二次运行中,我将浮点值放在第一位:
2.5 10
442837
我得到垃圾价值,谁知道发生了什么?
感谢帮助:)
我制作了很多简单的控制台c ++应用程序,我面临的一个问题是输入缓冲区.我尝试过cin.ignore和flush(),但它们似乎并不适合我.
如果我有以下代码:
cin >> char1;
cin >> char2;
Run Code Online (Sandbox Code Playgroud)
我按下:1(空格)2(回车),只有一个输入,1存储到char1,2存储到char2.
对不起,如果我对我的要求有点模糊.如果人们不理解,我会尝试编辑这个问题.
所以我在一个简单的控制台应用程序中制作菜单.我的代码非常多:(与底部的实际代码链接!)
int input;
bool LOOPING = true;
while(LOOPING)
{
cout << "Select an option:\n";
cout << "1 - option 1\n";
cout << "2 - option 2\n";
cout << "3 - option 3\n";
cout << "4 - option 4\n>";
cin >> input;
switch(input) {
case 1:
game();
break;
case 2:
game();
break;
case 3:
game();
break;
case 4:
game();
break;
default:
cout << "ERROR: invalid input!\nPlease enter in a number!\n\n";
break;
}
}
// rest of app...
Run Code Online (Sandbox Code Playgroud)
我的问题是,程序只是进入一个恒定的文本循环!为什么会这样?为什么不default:阻止这种情况发生?如何阻止这种情况发生?
提前致谢! …
每当我输入无法转换为整数的东西时,我都会得到一个无限循环.有什么建议?
cout << "Selection: ";
cin >> choice;
while((choice < 0)||(choice > 6)||(cin.fail())) {
cout << "That isn't a number." << endl;
cin.clear();
cout << "Selection: ";
cin >> choice;
}
Run Code Online (Sandbox Code Playgroud)