Я довольно новичок в 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 [email protected] for more info.
Причина, по которой я считаю, что это цикл, в том, что в консоли, которая не записывает тайм-аут, я могу продолжать вводить новую строку все время.
Так как вы используете JDoodle консоль будет ждать на сервере. Если вы ничего не набираете там, он зависает, пока его не убьют за то, что он слишком медленный.
Чтобы исправить это, введите текст, который вы хотите ввести перед запуском программы, в поле с надписью «Stdin Inputs …».
В качестве альтернативы вы можете установить «Интерактивный режим» на «Вкл», что покажет консоль на веб-сайте, где вы можете ввести текст и нажать клавишу ввода. (Я пытался, это работает).
Других решений пока нет …