试图对控制台功能有一些基本了解。我遇到问题,请考虑以下事项...
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
/*
This is a template Project
*/
void MultiplicationTable(int x);
int main()
{
int value = 0;
printf("Please enter any number \n\n");
getline(cin, value);
MultiplicationTable(value);
getchar();
return 0;
}
我实际上基于http://www.cplusplus.com/doc/tutorial/basic_io/的代码。我的IDE不能识别getline(),所以当我编译应用程序时,当然不可以。我得到一个错误
'getline': identifier not found
现在看一下这段代码
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
/*
This is a template Project
*/
void MultiplicationTable(int x);
int main()
{
int value = 0;
printf("Please enter any number \n\n");
cin>>value;
MultiplicationTable(value);
getchar();
return 0;
}
当我执行此行代码时,控制台窗口将打开并立即关闭。我想我缺少有关cin的东西。我确实知道它分隔空格,但我不知道还有什么。我应该使用什么来使我的生活更轻松。
最佳答案
函数getline()
在字符串标题中声明。因此,您必须添加#include <string>
。
它定义为istream& getline ( istream& is, string& str );
,但是您使用int
而不是字符串对象来调用它。
关于第二个问题:
当我执行此行代码时,控制台窗口将打开并立即关闭
当程序到达函数'\n'
(我假设您将其放在此处,因此窗口不会关闭)时,流中的输入中可能仍有一个getchar()
字符。您必须冲洗流。一个简单的解决方法是添加以下行而不是getchar()
int c;
while((c = getchar()) != '\n'){}
这将刷新您的流,直到下一个换行符为止。
备注:
conio.h
不是c ++标准的一部分,已过时。关于c++ - 更好地了解getline()和cin,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2915049/