【发布时间】:2013-03-11 19:55:28
【问题描述】:
我正在尝试读取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();
}
问题:转换不成功后,errno 不会更新为成功转换情况的错误值。对于之前不成功的调用,它的值保持不变。
请告诉我如何处理这个问题?
【问题讨论】:
标签: error-handling errno strtol