【问题标题】:Basic I/O not working in Visual C++ 2010?基本 I/O 在 Visual C++ 2010 中不起作用?
【发布时间】:2014-01-02 22:30:31
【问题描述】:

我正在尝试制作一个程序来询问他们的名字,然后说“你好,(他们的名字)!”背部。 到目前为止,这是我的代码,“getchar()”只是让它暂停,我可以看到输出。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string name;
    cout<<"What is your name?:";
    cin>>name;
    cout<<"Hello, "<<name<<"!";
    getchar();
    return 0;
}

这要求我输入,我输入我的名字,然后应用程序关闭! 我不知道为什么以及如何解决它!请帮忙!

编辑: 找出解决方法。完成代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string name;
    cout<<"What is your name?: ";
    cin>>name;
    cout<<"Hello, "<<name<<"!\n";
    system("PAUSE");
    return 0;
}

【问题讨论】:

标签: c++ visual-c++ io


【解决方案1】:

Dietmar 写了正确的答案,不幸的是出于某种奇怪的原因作为评论。

getchar() 已经是一个黑客,但我会让你离开。用system("PAUSE") 之类的东西代替它更像是一种黑客行为,所以我们不要去那里。

您的getchar() 正在运行,但在名称后面的缓冲区中仍有一个\n(请记住,您必须输入 ENTER 才能提交它!),这是令人满意的getchar(),无需进一步的用户干预。

你可以摆脱那个幽灵换行符:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getchar();

但是,请考虑配置您的执行环境以保留控制台窗口,而不是让您的程序对此负责。它接受用户输入并提供计算输出,而不是管理终端窗口。

如果您使用的是 Windows,我发现 cmd.exe /K myProgram 会很有帮助 - /K 会运行您的程序然后保持命令提示符打开

【讨论】:

    【解决方案2】:

    只需使用来自&lt;conio.h&gt; 的函数getch()

    #include <iostream>
    #include <string>
    #include <conio.h>
    using namespace std;
    
        int main()
        {
            string name;
            cout<<"What is your name?:\n";
            cin>>name;
            cout<<"Hello, "<<name<<"!\n";
            getch();
            return 0;
        }
    

    非常易于使用,安全且比系统(“暂停”)更好!

    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 2011-11-20
    • 2015-05-24
    相关资源
    最近更新 更多