2012-03-12 4 views
12

で読んで停止するようにCINを伝える:私はこのような入力からライン整数の読みたいとし改行

1 2 3 4 5\n 

私はCINがで停止したい「\ n」の文字が、CINは認識していないようですそれ。

以下は私が使ったものです。

vector<int> getclause() { 
    char c; 
    vector<int> cl; 

    while (cin >> c && c!='\n') {  
    cl.push_back(c); 
    cin>>c; 
    } 
    return cl; 
} 

「\ n」文字が表示されているときにcinが停止するようにするにはどうすればよいですか?

+7

CINは空白で区切られているので、( '\のN 'を含む)すべての空白は破棄されます。したがって、 'c'は' \ n'になることはありません。 – crashmstr

答えて

22

使用のgetlineとistringstream:

#include <sstream> 
/*....*/ 
vector<int> getclause() { 
    char c; 
    vector<int> cl; 
    std::string line; 
    std::getline(cin, line); 
    std::istringstream iss(line); 
    while (iss >> c) {  
    cl.push_back(c); 
    } 
    return cl; 
} 
+0

変数 'std :: istringstream iss'にイニシャライザがありますが、型が不完全です – Mark

+0

'getline'も名前空間' std'にあります。 –

+2

@マーク:つまり、#include が必要です。そのメッセージは、ほとんどの場合、型が宣言されているが、実際の定義が不足していることを意味します。言い換えれば、ヘッダーが欠落しています。 –

1

使用のstd :: getlineの、これはあなたがラインからの入力をフォーマットし取得するistringstreamを使用し、その後、最初の行を取得するにはgetlineメソッドを使用することができますトリック

関連する問題