c++ - While Loop 永远持续到输入字符串的结尾

标签 c++

如何运行 while 循环直到到达行尾或空字符。

这是我的代码

#include<iostream>
using namespace std;
main()
{
    char input[20];
    cout<<"Enter a line: ";
    cin>>input;

    while(input!='\0')
    {
        cout<<"This is a text";

    }
    system("pause");
}

最佳答案

如果您想一直读到换行符或 NUL,请在循环内一次读取一个字符。

#include<iostream>
int main()
{
  char input;
  std::cout << "Enter a line: " << std::flush;
  while(std::cin >> input && input != '\n' && input != 0) {
    std::cout << "This is a test\n";
  }
}

注意事项:

  • main 需要一个返回类型
  • 永远、永远不要说“使用命名空间标准;”
  • 如果您希望 cout 立即出现,请不要忘记刷新。
  • 注意 while 条件中的复合测试:
    • 首先,读取是否成功?
    • 接下来,是不是'\n'(你的条件之一)。
    • 接下来,是不是NUL(你的其他条件)。
  • 循环体将针对每个输入字符执行一次——这是您想要的吗?

但是,请考虑您是否正确指定了您的要求。这是一个不寻常的要求——为什么文本文件中会有 NUL,为什么要单独处理每个字符?

在惯用的 C++ 中,您可以使用 std::getline 一次读取一行输入文件:

std::string myString;
while(std::getline(std::cin, myString)) {
   // process myString
}

如果你只想在一行中阅读:

std::string myString;
if(std::getline(std::cin, myString)) {
  // process myString
}

最后,如果你想读一行,并忽略它的内容:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

关于c++ - While Loop 永远持续到输入字符串的结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8174728/

相关文章:

c++ - 为什么这个程序会导致段错误?

c++ - 在MFC中拖动子对话框时如何移动父对话框?

c++ - 我应该担心 g++ 警告说 'inlining failed' 吗?

c++ - OpenGL - 创建立方体网格

c++ - 线程与 pthread 条件变量同步

c++ - 套接字聊天系统 - 将它们广播给所有客户端

c++ - 嵌套引用传递

python - Cython 扩展类 : How do I expose methods in the auto-generated C struct?

c++ - 在 QTableView 上绘制 QGraphicsLineItem

c++ - 具有 boost::shared_ptr 类型成员的 std::map 序列化失败