2010-05-26 43 views
0

试图对控制台功能有一些基本的了解。我有问题,那么请考虑以下...更好地理解getline()和cin

#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缺少一些东西。我知道它划定了空格,但我不知道还有什么。我应该如何使用输入来使我的生活更轻松。

+0

嗯,我认为第一个代码不起作用的原因是因为getline期望(char * s,streamsize n),而cin是一个istream对象,所以这就是编译器抱怨的原因。 我不知道为什么窗口不保持打开第二个代码。 – 2010-05-26 16:56:40

+0

在void MultiplicationTable(int x)的末尾添加括号,如下所示void MultiplicationTable(int x){}; – Secko 2010-05-26 17:11:10

回答

3

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

关于你的第二个问题:

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

有可能仍然是从您的输入'\n'字符流中,当你的程序到达函数getchar()(我假设你放在那里,所以你的窗口不关闭)。你必须冲洗你的流。一个简单的办法是,而不是getchar(),添加行

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

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

备注:conio.h不是C++标准的一部分,也不适用。

+0

谢谢。我很困惑这个iostream。我遇到了以前的问题,字符仍然在iostream中,因此应用程序无法正常工作。是否有任何资源或任何你可以说如何解决这些类型的问题? – numerical25 2010-05-26 17:56:23

3

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

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

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

好的谢谢。但是什么cin代码。为什么它切断? – numerical25 2010-05-26 17:06:42

+0

@numerical你将不得不改写它。 – 2010-05-26 17:14:08

+0

我有第二个代码使用cin功能。如果您在编译器中运行该代码。它执行并立即结束。它没有给我任何时间输入任何东西或做任何事情。 – numerical25 2010-05-26 17:49:21

0

您是exiting the program才可以,因为(我猜)查看结果你double-clicked.exe file从Windows资源管理器(或台式机)内视图才能执行。相反,请转到开始,运行,键入cmd.exe并打开一个命令窗口。导航到您的程序所在的位置。在命令行中输入程序的名称并执行。它将保持打开状态,直到您关闭命令窗口intentionally