在C++中如何输出另一串文本而不是只向下移动光标?

问题描述 投票:0回答:1

我刚刚开始学习 C++,并编写了这个简单的 while 循环程序:

#include <iostream>
#include <string>

int main() {

    std::string Name;

    while(Name.empty()){
        std::cout << "\nEnter name: ";
        std::getline(std::cin>>std::ws, Name);
    }
    
    std::cout << "Hello, " << Name;
    return 0;
}

这意味着要求用户输入他们的名字,直到给出一个不为空的输入,但是当您向变量中输入一个空值而不是打印另一行“Enter name:”时,它只是将光标在终端内向下移动到另一行。

如何在每次 while 循环迭代时输出另一行“输入名称:”?

我尝试过使用 和

c++ while-loop
1个回答
0
投票

问题的基本解决方案是简单地从

>>std::ws
调用中删除
std::getline
部分。这使得它在按下 Enter 键后打印
Enter name: 
字符串。 但是,这会认为纯粹由空格组成的名称是有效的,您必须检查这一点。如果你想剥离(修剪)字符串,可以使用 this 来实现一些方便的功能。 如果您想保持简单,请使用基本的 for 循环。

完整代码:

#include <iostream>
#include <string>

int main() {

  std::string Name;
  bool is_not_whitespace = true;

  while (Name.empty() || is_not_whitespace) {
    std::cout << "\nEnter name: ";
    std::getline(std::cin, Name);

    for (int i = 0; i < Name.length(); i++) {
      const auto substring = Name.at(i);
      if (substring != ' ') {
        is_not_whitespace = false;
        break;
      }
    }
  }

  std::cout << "Hello, " << Name;
  return 0;
}

希望我能帮忙!

© www.soinside.com 2019 - 2024. All rights reserved.