2010-05-26 61 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