C++ 而循环将永远继续以获取输入字符串的结尾

C++ 而循环将永远继续以获取输入字符串的结尾,c++,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("pa

如何运行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");
}
#包括
使用名称空间std;
main()
{
字符输入[20];
库廷普特;
while(输入!='\0')
{
不能像这样:

std::string line;

if (std::getline(std::cin, line))
{
  std::cout << "Thank you, you said, \"" << line << "\".\n";
}
else
{
  // error, e.g. EOF
}

如果要一直读到换行符或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";
  }
}
如果您只想在一行中阅读:

std::string myString;
if(std::getline(std::cin, myString)) {
  // process myString
}
最后,如果您想阅读一行,并忽略其内容:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.ignore(std::numeric_limits::max(),'\n');
尝试以下方法:

i = 0;
while ((input[i] != '\0') && i < 20)
{
  cout<<"This is a text";
  i++;
}
i=0;
while((输入[i]!='\0')&&i<20)
{

cout问题在于,您一次读取整个文本块,然后打印它,直到输入为“\0”。但是,您从来没有在循环中实际更新过它。您可以在循环中使用cin来获取输入,或者如果您试图输出每个字符,您可以为字符数组编制索引。

您不太清楚要做什么我们正在尝试这样做,所以更多的细节会有所帮助。-1:为了提供一个甚至不编译的示例程序-你能解释一下吗?@VitalyIsaev,因为由此产生的名称空间污染会产生,并且没有任何用处。请看其他人的原因。但我确实在我的小项目中使用了它,我不在乎
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
i = 0;
while ((input[i] != '\0') && i < 20)
{
  cout<<"This is a text";
  i++;
}