在调用std::getline之前检查数据可用性,可以确保程序在尝试从输入流中读取数据之前,确保输入流中有可用的数据。这可以通过检查输入流的状态来实现。
在C++中,可以使用输入流的good()
成员函数来检查输入流是否处于可用状态。例如:
#include<iostream>
#include<string>
int main() {
std::string input;
while (std::cin) {
if (std::cin.good()) {
std::getline(std::cin, input);
std::cout << "Input: "<< input<< std::endl;
} else {
std::cout << "Invalid input"<< std::endl;
break;
}
}
return 0;
}
在上面的代码中,我们使用while (std::cin)
循环来持续读取输入流中的数据,直到输入流被关闭或发生错误。在每次循环中,我们使用if (std::cin.good())
来检查输入流是否处于可用状态。如果输入流可用,则使用std::getline()
函数从输入流中读取一行数据,并将其存储在input
变量中。如果输入流不可用,则输出错误消息并退出循环。
这种方法可以确保在调用std::getline()
函数之前,输入流中有可用的数据,从而避免程序崩溃或出现未定义行为。
领取专属 10元无门槛券
手把手带您无忧上云