我几天前开始使用C ++进行编程,这让我很烦恼:
每当我输入数字时,程序就会结束。
代码:
using namespace std;
int main()
{
int entry;
cout << "Write a number: ";
cin >> entry;
cout << entry;
cin.get();
return 0;
}
我需要一些帮助,所以我的程序可以正常运行。
右边我的意思是在结束后输出数字......但它只是在我输入数字后结束并按下输入它不打印它。
更新:
为了那些不明白我的意思的人(对不起我的英语)
好的,让我解释一下。
- 所以程序可以从键盘右侧获取值。
- 我输入一个数字,假设是6,好现在我按回车。
- 现在该数字应该在屏幕上输出,但这不会发生,因为程序关闭得太快。
但实际上,通过在每次数据输入请求后添加第二个cin.get();
或添加cin.ignore();
来解决这个问题。
答案 0 :(得分:1)
这是一个略微改进的版本,可能更接近你想要的:
#include <string>
#include <sstream>
#include <iostream>
int main()
{
int n;
std::string line;
while (true)
{
std::cout << "Please enter an integer: ";
if (!(std::getline(std::cin, line))) { return 1; /* error! */ }
std::istringstream iss(line);
if (iss >> n) { break; }
}
std::cout << "Thank you. You said: " << n
<< "\n\nPlease press Enter to quit.";
std::getline(std::cin, line);
}
在输入流关闭或以其他方式终止之前触发getline
中的错误条件,然后才能读取另一行(例如,如果在控制台上按Ctrl-D)。在您输入有效整数之前,对n
的标记提取失败,并且循环将继续循环,直到发生这种情况。
答案 1 :(得分:0)
get()
从流中读取一个且只有一个字符,因此在您输入数字后程序结束是完全正常的。
查看std::basic_istream<>::getline()
方法或更简单的std::getline()
,不需要动态缓冲区。
如果您需要有关C ++中基本IO的更多信息,可以阅读以下文档:Basic Input/Output - C++
如评论中所述,我很想念这个问题,我最初认为只有一个数字被读入变量。
再仔细阅读后,我无法理解问题所在。
答案 2 :(得分:0)
您需要做的就是使用读取整数后留下的换行符。
这也发生在java中。
using namespace std;
int main()
{
int entry;
cout << "Write a number: ";
cin >> entry;
cout << entry;
cin.get(); //Consume newline
cin.get();
return 0;
}
答案 3 :(得分:-2)
原因是你正在使用
cin.get();
return 0;
在程序结束时,cin.get()
读取您输入的数字,然后直接转到return 0;
,从而结束程序。
要停止此操作,您可以在cin.get();
之前添加额外的return 0;
或使用
system("Pause");
之前的return 0;