Бесконечный цикл после cin C++

Я довольно новичок в C++, так что это меня смущает.

Этот код, кажется, зацикливается после std::cin:

#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;
}

Спасибо!

РЕДАКТИРОВАТЬ: Я не уверен, что я понимаю ваши ответы, но происходит то, что, когда вы вводите имя и нажимаете ввод, это ничего не делает. Терминал просто переходит к следующей строке, позволяя вам тоже что-то написать на этом. Это происходит бесконечно, немного похоже на то, когда вы просто нажимаете ввод без какого-либо текста.

РЕДАКТИРОВАТЬ 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 jdoodle@nutpan.com for more info.

Причина, по которой я считаю, что это цикл, в том, что в консоли, которая не записывает тайм-аут, я могу продолжать вводить новую строку все время.

1 ответ

Решение

Поскольку вы используете JDoodle, консоль будет ожидать на сервере. Если вы ничего не набираете там, он зависает, пока его не убьют за слишком медленную работу.

Чтобы исправить это, введите текст, который вы хотите ввести перед запуском программы, в поле с надписью "Stdin Inputs...".

В качестве альтернативы вы можете установить "Интерактивный режим" на "Вкл", что покажет консоль на веб-сайте, где вы можете ввести текст и нажать клавишу ввода. (Я пытался, это работает).

Другие вопросы по тегам