我正在尝试CLion编写一些基本的C++程序,但是每次我使用std::cinstd::getline输入某些输入时,输入都会无故被打印回控制台。

例如,如果我运行此程序

#include <iostream>
#include <string>

int main(){
    string name;
    std::cin >> name;
    std::cout << name << std::endl;
    return 0;
}

并输入thomas并按Enter,我得到此输出
thomas
thomas
thomas

相反,我什么时候应该得到
thomas
thomas

我在Windows 10 x64上使用CLion / Mingw64

最佳答案

您的代码没有错。

您观察到的是在后台使用WinPTY的副作用。默认情况下,CLion使用它与Windows上的调试程序进行通信。

这是我们问题跟踪器中的相应错误:CPP-2580 User input appears twice in output window in CLion under MinGW,请随时投票。

虽然目前还没有适当的解决方法,但是您可以使用对该票证的注释中建议的解决方法来禁用PTY:

08-16 19:45