2016-09-19 54 views
0

はここで基本的なコードスニペットです成功:は `cin.getlineは()`

基本的に
while (true) 
{ 
    cin.getline(str, STRSIZE); 
    if (str[0] == '\n') { break; } 
} 

、ユーザの入力だけで孤独なリターンキーは、ループを終了することになっです。 \nがフラッシュされ、strに決して終わらないので、孤独な\nが入力されたことを確認するために、もちろん、このコードは機能しません。なぜこれがうまくいかないのか不思議ではない。なぜだか知っているよ。

どのようにあなたが孤独\nが故にwhile-loopを終了し、入力されたことを確認することができますか?しかし

while (cin >> str); 

:だけ私の実際のコードでは、時間

  • で一つの単語を取る
    • >>


  • は、私は1つが次の操作を行うことができます知っていますwhile-loopではなく、for-loopが使用されます。

    答えて

    3

    cin.getline()が行の読み込みに失敗した場合、cinはエラー状態になります。

    while (cin.getline(str, STRSIZE)) 
    { 
        if (str[0] == '\0') { break; } 
    
        // Use str 
    } 
    
    +0

    ああ、私は() '' cin.getlineを呼び出すときに、 'str'はstr'が前に持っていた'というゴミを\ '0'に設定し、いないされます。

    あなたは使用することができますコール? –

    +0

    @SirJony、それは正しいことです。 'str'は' \ 0'ではなく空の文字列に設定されます。 –

    +0

    違いは何ですか?ところで、 'string 'ではなく' char [] 'を使っています。私はそれを明確にしないことをお詫びします。 –

    関連する問題