-2

我是 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;
}

谢谢!

编辑:我不确定我是否理解您的答案,但是当您输入名称并按 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 jdoodle@nutpan.com for more info.

我认为这是一个循环的原因是,在一个不写超时的控制台中,我可以一直在新行上继续输入。

4

1 回答 1

2

由于您使用的是JDoodle,因此控制台将在服务器上等待。如果你不在那里输入任何东西,它就会挂起,直到它最终因为太慢而被杀死。

解决此问题的方法是在运行程序之前将要输入的文本输入标有“Stdin Inputs...”的框中。

或者,您可以将“交互模式”设置为“开”,这将在网站中显示控制台,您可以在其中输入一些文本并按 Enter。(我试过了,它有效)。

于 2017-09-08T12:11:56.847 回答