基本I / O在Visual C ++ 2010中不起作用?

时间:2014-01-02 22:30:31

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

我正在尝试制作一个程序来询问他们的名字,然后说“你好,(他们的名字)!”背部。 到目前为止,这是我的代码,“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;
}

2 个答案:

答案 0 :(得分:5)

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运行您的程序然后保持命令提示符打开

答案 1 :(得分:-1)

只需使用getch()中的<conio.h>功能!

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

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