在 C++ 中,clear()
是用于清除流的状态和控制信息的成员函数,通常用于输入流(例如 std::cin
)和输出流(例如 std::cout
)。
对于输入流:
#include <iostream>
int main() {
int num;
std::cin >> num;
// 检查输入流的状态
if (std::cin.fail()) {
std::cerr << "Invalid input!" << std::endl;
// 清除输入流的状态和控制信息
std::cin.clear();
// 忽略缓冲区中的错误字符,直到遇到换行符
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
return 0;
}
在这个例子中,如果用户输入了无效的内容(如字母而不是数字),std::cin.fail()
将返回 true
,然后通过 std::cin.clear()
清除输入流的状态。随后,使用 std::cin.ignore()
忽略掉缓冲区中的错误字符,以便输入流重新准备接受新的输入。
对于输出流:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
// 清除输出流的状态和控制信息
std::cout.clear();
return 0;
}
Hello, World!
在这个例子中,std::cout.clear()
用于清除输出流的状态。通常,这不太常见,因为输出流的状态一般不会出现错误。不过,有时你可能希望在某些情况下手动清除输出流的状态。
请注意,clear()
主要用于清除流的状态信息,而不是清除流的内容。要清除缓冲区中的内容,你可以使用 flush()
。
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
// 清除输出流的缓冲区内容
std::cout.flush();
return 0;
}
Hello, World!
上述代码中的 std::cout.flush()
会强制将缓冲区中的内容刷新到目标设备(通常是终端)。
标签:std,cout,清除,clear,cin,C++,输入 From: https://www.cnblogs.com/keye/p/17901889.html