我正在尝试读取 上的几个数字stdin
,每行一个数字。如果任何行上有任何数字和字符串,我想忽略任何尾随文本。为了实现这一点,我使用了以下代码:
while (getline(cin, str)) {
num = strtol(str.c_str(), NULL, 0);
if (errno != ERANGE && errno != EINVAL) {
arr[i++] = num;
req_pages_size++;
cout << arr[i-1] << "\t";
}
str.clear();
}
ISSUE: 转换不成功后,errno 不会更新为成功转换情况的错误值。对于以前不成功的调用,它的值保持不变。
请让我知道如何处理这个问题?