我正在解析这样的 CSV 文件:
while (std::getline(iss, value, ',')) {
cout << col << " " << value << endl;
switch (col) {
case 0: customer.id = std::stoi(value); break;
它会停在第一个值处。 在我的控制台中我有这个: 0 3222947947 所以 col = 0 且 value = 3222947947。知道为什么 std::stoi(value) 会抛出错误 'std::out_of_range' 吗?
3222947947 -> 3,222,947,947。超过30亿。
int
仅在22亿左右有效。所以如果程序说该值超出范围我会相信。
如果 3222947947 在您的输入集中有效,您需要使用更大的整数(
long long
或 int64_t
和 std::stoll
)或无符号整数(unsigned int
或 uint32_t
和 std::stoul
) ) 如果负数不在有效输入集中。