如何在按下返回键时退出程序? 我正在编写一个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