我正在尝试制作一个程序来询问他们的名字,然后说“你好,(他们的名字)!”背部。 到目前为止,这是我的代码,“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;
}
答案 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;
}
非常易于使用,安全且比系统更好(“暂停”)!