21xrx.com
2024-11-05 18:56:10 Tuesday
登录
文章检索 我的文章 写文章
如何判断C++输入何时结束?
2023-07-05 06:11:14 深夜i     --     --
C++ 输入 结束 判断

在 C++ 中,输入的方式有很多种,例如从键盘输入、从文件读取等等。在处理这些输入时,我们有时需要知道输入何时结束,以便正确地处理输入数据。本文将介绍几种判断 C++ 输入何时结束的方法。

1. 使用 EOF 判断

EOF 是 C++ 中特有的一个常量,其值为 -1。在使用 getchar() 或 cin.get() 从键盘或文件读取单个字符时,当读到文件末尾或遇到输入流错误时,将返回 EOF 值。通过判断是否读到 EOF 值,可以知道输入何时结束。

例如,下面的代码可以从标准输入中读取字符,直到读到 EOF 值,然后打印出读取的字符个数:


int count = 0;

char ch;

while ((ch = getchar()) != EOF) {

  count++;

}

cout << "Total characters: " << count << endl;

2. 使用 getline() 判断

getline() 函数可以从输入流中读取一行字符串,并将其存储到指定的变量中。当读到文件末尾或遇到输入流错误时,getline() 函数将返回 false 值。因此,通过判断 getline() 函数返回值是否为 false,可以知道输入何时结束。

例如,下面的代码可以从标准输入中读取多行字符串,直到读到文件末尾,然后打印出读取的行数:


int count = 0;

string line;

while (getline(cin, line)) {

  count++;

}

cout << "Total lines: " << count << endl;

3. 使用特殊字符判断

有些输入方式中,输入数据的结束并不是通过 EOF 或 getline() 函数返回 false 值,而是通过输入一些特殊字符实现的。例如,从键盘输入时,可以通过输入 Ctrl + Z(Windows)或 Ctrl + D(Linux、Unix)来结束输入。

此时,可以使用 istream 类的 eof() 和 fail() 成员函数来判断输入是否结束。eof() 函数在读到文件末尾时返回 true 值,fail() 函数在遇到输入流错误时返回 true 值。因此,当这两个函数都返回 true 值时,可以判断输入已经结束。

例如,下面的代码可以从标准输入中读取整数,直到遇到输入流错误(例如输入字符或小数),然后打印出读取的整数个数:


int count = 0;

int x;

while (cin >> x) {

  count++;

}

if (cin.eof() && !cin.fail())

  cout << "Total integers: " << count << endl;

else

  cout << "Invalid input!" << endl;

以上是几种常见的判断输入何时结束的方法,需要根据具体情况选择合适的方法进行处理。在编写代码的过程中,应注意输入格式和错误处理,以避免程序出现异常。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复