2011-10-30 7 views
-2

私は誰もが私にユーザー入力を取得するための最良の方法を教えてくださいすることができます取得ユーザー入力

おかげで、変数に学生が質問を書いて、その質問(または文字列)を格納できるようにするプログラムを書いていますあなたの答えとコメントのために

+7

これを書いている間に得た関連する質問のうち、あなたは何かを見ましたか?このページの右側の「関連する」セクションにリンクされている質問を見ましたか? – Mat

+0

はい、私は1つを見ました – melonQheadQsheep

+0

私は使用できます:string str = ""; getline(cin、str、 '\ n');これは入力を収集し、マルチスレッドプログラムで使用する良い方法です – melonQheadQsheep

答えて

8

フォーマットされたI/O; 赤ん坊の最初C++から撮影:

#include <string> 
#include <iostream> 

int main() 
{ 
    std::string name; 
    std::cout << "Enter your name: "; 
    std::getline(std::cin, name); 
    std::cout << "Thank you, '" << name << "'." << std::endl; 
} 

これは多くのことができる(したがってます)が間違って行くように、非常に満足のいくものではありません。ここで少し、水密バージョンです:getline()を使用して

int main() 
{ 
    std::string name; 
    int score = 0; 

    std::cout << "Enter your name: "; 

    if (!std::getline(std::cin, name)) { /* I/O error! */ return -1; } 

    if (!name.empty()) { 
    std::cout << "Thank you, '" << name << "', you passed the test." << std::endl; 
    ++score; 
    } else { 
    std::cout << "You fail." << std::endl; 
    --score; 
    } 
} 

は、あなたが空の行を読むかもしれないことを意味し、その結果が空の場合には、チェック価値があります。また、ユーザーが空のファイルをstdinにパイプする(一般的には、特定の状況が存在すると想定せず何かの準備をするなど)ため、読み取り操作の正しい実行を確認することも良い方法です。代わりにトークン抽出、std::cin >> nameがあります。これは、一度に1単語しか読み込まず、他の空白のように改行を扱います。

0

使用例:thisサンプル例を示します。 最小のエラーのある簡単な&です。

+0

@KerrekSBなぜそんなことを考えるのですか??? –

+1

ねえ、私のコメントはどこに行きましたか?トピックについては、 'gets()'は完全にチェックされていないので危険で、広く推奨されず、推奨されていません。間違いなく、C++の文脈ではあまり推奨されていないものはありません。 –

関連する問題