【问题标题】:better understanding of getline() and cin更好地理解 getline() 和 cin
【发布时间】:2016-05-30 04:45:42
【问题描述】:

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

#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 需要 (char* s, streamsize n ),而 cin 是一个 istream 对象,所以这就是编译器抱怨的原因。我不确定为什么第二个代码的窗口没有保持打开状态。
  • 在 void MultiplicationTable(int x) 的末尾添加括号,就像这样 void MultiplicationTable(int x){};

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


【解决方案1】:

函数getline()在字符串头中声明。所以,你必须添加#include &lt;string&gt;。 它被定义为istream&amp; getline ( istream&amp; is, string&amp; str );,但是你用int而不是字符串对象来调用它。

关于你的第二个问题:

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

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

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

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

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

【讨论】:

  • 谢谢。我真的对这个 iostream 感到困惑。我遇到了以前的问题,其中字符仍在 iostream 中,因此应用程序无法正常运行。关于如何解决这些类型的问题,您有什么资源或可以说的吗??
【解决方案2】:

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

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

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

【讨论】:

  • @numerical 你将不得不重新措辞。
  • 我的第二个代码使用了 cin 功能。如果您在编译器中运行该代码。它执行然后立即结束。它不会让我有时间输入任何内容或做任何事情。
  • @numerical 我想你是在问一个关于你的 IDE 的问题——你使用的是哪一个?换句话说,你是如何编译和运行这段代码的?
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2014-06-22
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多