更好地理解getline()和cin

时间:2010-05-26 16:49:19

标签: c++ visual-studio visual-c++

尝试对控制台功能有一些基本的了解。我遇到了问题,请考虑以下内容......

#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的事情。我知道它划分了空格,但我不知道还有什么。我应该用什么来输入,让我的生活更轻松。

3 个答案:

答案 0 :(得分:3)

函数getline()在字符串头中声明。因此,您必须添加#include <string>。 它定义为istream& getline ( istream& is, string& str );,但您使用int而不是字符串对象来调用它。

关于你的第二个问题:

  

当我执行这行代码时,控制台窗口会打开并立即关闭

当你的程序到达函数'\n'时,你的输入中可能还有一个getchar()个字符(我假设你把它放在那里,所以你的窗口没有关闭)。你必须刷新你的流。一个简单的解决方法是,而不是getchar(),添加行

 int c;
 while((c = getchar()) != '\n'){} 

这将刷新您的流,直到下一个换行符。

备注:conio.h不是c ++标准的一部分而已过时。

答案 1 :(得分:3)

getline函数读取字符串,而不是整数:

#include <string>
#include <iostream>
using namespace std;

int main() {
    string line;
    getline( cin, line );
    cout << "You entered: " << line << endl;
}

答案 2 :(得分:0)

你是exiting the program之前可以查看结果,因为(我猜)你double-clicked来自Windows资源管理器(或桌面)视图中的.exe file才能执行。而是转到“开始”,“运行”,键入cmd.exe并打开命令窗口。导航到您的程序所在的位置。在命令行输入程序名称并执行。在intentionally关闭命令窗口之前,它将保持打开状态。