试图对控制台功能有一些基本了解。我遇到问题,请考虑以下事项...

#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/

10-13 09:02