如何在按下返回键时退出程序? 我正在编写一个C++程序,它应该从用户那里输入一个输入字符串,打印它,并要求用户再次输入另一个字符串,然后再打印,直到用户按下返回键而不输入任何字符串。在这种情况下,程序应该退出
我提出了以下建议,但效果并不理想。有什么想法吗如何在按下返回键时退出程序? 我正在编写一个C++程序,它应该从用户那里输入一个输入字符串,打印它,并要求用户再次输入另一个字符串,然后再打印,直到用户按下返回键而不输入任何字符串。在这种情况下,程序应该退出,c++,C++,我提出了以下建议,但效果并不理想。有什么想法吗 int main(){ string surname; int c; while (true) { surname = ""; cout << "Enter surname (RETURN to quit): "; c = cin.get(); if (c == '\n') { break; }
int main(){
string surname;
int c;
while (true) {
surname = "";
cout << "Enter surname (RETURN to quit): ";
c = cin.get();
if (c == '\n') {
break;
}
cin >> surname;
cout << surname << endl;
}
return 0;
}
intmain(){
串姓;
INTC;
while(true){
姓氏=”;
姓氏;
cout我会给你一些提示,这样我就不会帮你解决问题,而是帮助你
您不需要一次读取一个字符,您可以将每一行读入一个string
变量。此外,您还需要使用std::getline(std::cin,stringvariable)
而不是cin>>stringvariable
,因为后者将跳过所有换行符,直到到达非换行符,所以按enter键本身不会做任何事情
使用std::getline
后,您可以通过比较字符串长度与0或调用empty
来判断用户是否输入了任何内容。问题是,当请求字符串时,iostream库总是返回一个单词,忽略任何空格。这在大多数情况下都非常有用。但是如果您想要要检测空字符串,应先读取一个字符,然后检查它是否为新行字符:
while(true) {
char c;
string surname;
cout << "Enter surname (RETURN to quit): ";
cin.get(c)
if(c == '\n') break;
cin >> surname;
if(c != ' ' and c != '\t' and c != '\n')
surname.insert(0, c);
}
return 0;
while(true){
字符c;
串姓;
姓氏;
如果(c!=''和c!='\t'和c!='\n')
姓氏。插入(0,c);
}
返回0;
请注意,如果名称只有一个字符长,此解决方案会有一些问题。您可能只需要使用cin.get
来获取整个字符串…我不建议对交互式程序使用cin>
。它的行为定义明确,但对于用户键入的输入通常是意外的。相反,请使用以下方法:
std::getline(std::cin, surname);
这将始终等待用户键入一堆内容并按Enter键,而不会出现诸如在流中缓冲数据等奇怪行为。您不需要像这样初始化std::string
:字符串姓氏;姓氏=”;
这是不必要的
您可以使用getline
函数,然后检查此字符串是否为空,如下所示:
string surname;
cout << "Enter surname (RETURN to quit): ";
while (getline(cin, surname))
{
if (surname.empty())
break;
cout << surname << endl << "Enter surname (RETURN to quit): ";
}
字符串姓氏;
不行,我是自学。斯坦福工程处处CS106B作业的一小部分问题。正如我所说,自学作业的一小部分问题-4