2017-09-08 18 views
-1

私はC++でかなり初心者ですので、これは私を混乱させます。C++の後の無限ループ

#include <iostream> 
#include <string> 

using namespace std; 

int main() { 
    cout << "My name is Martin. What's yours?" << endl; 
    string name; 
    cin >> name; //It seems to loop around here 
    cout << "Ah, so you are" << name << "." << endl; //It doesn't print this message 

return 0; 
} 

ありがとう:

このコードは、無限ループstd::cin後のようです!

編集:私はあなたの答えを理解しているのか分かりませんが、名前を入力してEnterキーを押すと何も起こりません。端末はちょうど次の行に進み、あなたもその行に何かを書くことができます。これはこれを無限に行います。ちょうどテキストを入力せずにEnterキーを押すと、少し似ています。

編集2:私は悪い、私は物事をクリアしようとする必要があります。これはJDoodleコンソールに来るものです:私はそれがループであると信じて

My name is Martin. What's yours? 


JDoodle - Timeout - Some common reasons for Timeout 
Your Program may have a endless loop 
Please check the program and try again or contact JDoodle support at [email protected] for more info. 

理由は、私はすべての時間の新しい行に入力し続けることができ、タイムアウトを書き込みませんコンソールでということです。

+1

IOを待っているブロックされたスレッドは、無限ループと同じものではありません。 – Dai

+3

名前を入力してEnterキーを押します。あなたがそれを待っているどこかにポップアップするコンソールウィンドウがあるはずです。 – nwp

+0

あなたはどんなデータにも入力しましたか? [これがあればここで動作](https://ideone.com/vSpZRT) – NathanOliver

答えて

1

JDoodleを使用しているため、コンソールはサーバーで待機しています。あなたが何かをタイプしなければ、それは最終的には遅すぎるために最終的に殺されるまでハングアップします。

これを修正する方法は、プログラムを実行する前に入力するテキストを "Stdin Inputs ..."というラベルのボックスに入力することです。

また、「対話モード」を「オン」に設定すると、Webサイトにコンソールが表示され、テキストを入力してEnterキーを押すことができます。 (私は試して、それは動作します)。

+0

NoScriptまたはその他のブラウザ設定で対話シェルをブロックした場合、テキストチェックを入力できない場合。 – nwp