std::string line;
while (std::getline(std::cin, line)) {
// Read a line.
std::stringstream lineStream(line);
int a, b;
char x = 'X';
if (lineStream >> a >> x >> b && x == ',') {
// The line starts with number comma nummber
}
else {
// There was a failure reading the numbers of commas
// This will catch the 12P
}
2条答案
按热度按时间ttcibm8c1#
步骤1:将文件中的每一行读入一个字符串。
第二步:检查由“数字逗号数字”组成的行。
gjmwrych2#
我建议您使用
std::getline
在每个循环迭代中读取文件的一行,在每个循环迭代中,您调用std::string::find
和std::string::substr
将该行拆分为两个字符串,其中第一个字符串包含,
之前的所有内容,第二个字符串包含,
之后的所有内容。然后你可以使用函数std::stoi
尝试将字符串转换为整数。如果这个函数失败,它将抛出一个异常。另外,使用中间的函数参数std::stoi
,你可以检查整个字符串是否被转换。下面是一个示例程序:
对于问题中指定的输入,此程序具有以下输出:
标准输出(
std::cout
):标准误差(
std::cerr
):如您所见,检测到字符串
"12P4"
只能部分转换为整数,因此跳过了该行。