2012-02-11 85 views
0

我在嘗試學習C++,一個練習是構建一個命令行工具,該工具接受用戶輸入並將其存儲在char數組中,直到用戶輸入空行。我認爲我的骷髏是正確的,但無論出於何種原因,我的這段時間都在持續。我的代碼如下:針對 n的C++測試 n

char a[256]; 

    //while the first character isn't a new line 
    while (a[0] != '\n') { 

     //get the char array 
     cin >> a; 

     cout << a; 

    } 

任何幫助將不勝感激。

+9

如果你真的想學習C++,請放下你正在使用的任何教程,併購買一本教你如何正確使用字符串的書(http:// jcatki。 no-ip.org/fncpp/Resources)。 – 2012-02-11 15:43:45

回答

3

您無法使用operator>>檢測換行符。對於大多數類型,它使用空格作爲分隔符,並且不區分空格,製表符或換行符。使用getline來代替:

for (std::string line; std::getline(std::cin, line);) 
{ 
    if (line.empty()) 
    { 
     // if the line is empty, that means the user didn't 
     // press anything before hitting the enter key 
    } 
} 
1

初學者:使用std :: string而不是char數組並選擇有用的變量名稱。

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    for(string text;getline(cin, text);) { 
     if (!text.empty()) { 
      cout << text << endl; 
     } else { 
      break; 
     }  
    } 
} 
+1

測試你的代碼。 http://ideone.com/wDFGw – 2012-02-11 16:16:03

+0

謝謝Benjamin,我不知道ideone.com - http://ideone.com/Z95Ef – 2012-02-11 17:15:00

+0

好吧,現在看看你的輸出。它不會停留在空行上,就像OP所要求的那樣。 – 2012-02-11 17:27:03