std::stoi 超出范围.从文件转换
std::stoi out of range. Converting from file
我正在尝试打印文件中每行指示的行,但在使用 std::stoi 时返回超出范围的异常。文本文件每行都有一个数字,从第一行的 10 到末尾的 0。这就是为什么我不明白为什么超出范围,因为它应该与 int 一起使用,所以 32 位。
这是我的代码:
if (myfile.is_open()){
while ( getline (myfile,line) ){
DirLine = myfile.tellg();
myfile.seekg(0,0);
i=0;
lines = line;
while (fl){
j = std::stoi(lines,nullptr,10);
if (j == i){
cout << lines <<" - "<<j << 'n';
myfile.seekg(0,DirLine);
fl = false;
}
getline(myfile,lines);
i++;
}
}
myfile.close();
}
else cout << "Unable to open file";
你能解释一下为什么会这样吗?
提前感谢任何帮助。
试试这个。
- 传递一个字符串参数 stoi(行);
如果它不起作用
- 把这个放在 stoi 之前:lines.append(" ");
如果仍然错误,则
string::size_type sz;
stoi(lines,sz);
我认为问题是,在 stoi 返回值之前。 stoi 将尝试找到第一个数字的下一个字符的位置。 并将其分配给指针,如果数字后面没有字符,则该指针将超出界限。因此,要么通过附加任何字符来提供额外的索引,要么尝试使用单个参数。
尝试使用 std::stoul() 函数。它解析无符号的长值,并且可能具有更大的范围(取决于CPU/OS)。在 Windows 上,我在没有索引参数的情况下解析时遇到了问题,所以它看起来像std::stoul(line, 0)
.存在 std::stoull 表示无符号的长长。
相关文章:
- 将生成文件转换为 CMakeLists.txt等效项
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 如何使用 CreateProcess 调用 tshark 将捕获文件转换为 txt
- 使用emscripten将c++文件转换为wasm时出错
- 将Qt qml文件转换为位图图像
- (对于C++)读取类型从文件转换为 2D 数组
- 使用向量将字符串从C 中的文件转换
- 编写一个 C++ 程序以将文本文件转换为 HTML 文件
- 如何在 C++ 中将矩阵市场文件转换为矩阵
- 是否可以将信息从XML文件转换为CPP
- 将 ASCII 文件转换为 C++ 的二进制格式
- 将生成文件转换为CMakeLists;无法加载共享库
- FlatBuffers:未支撑的工会向量错误将JSON文件转换为二进制文件
- 如何使用 qt 将 Linux 文本文件转换为 Windows 文本文件
- 如何将可执行文件转换为 C++ 文件以达到代码峰值
- 将windows软件中的未知数据库文件转换为MySqli数据库
- 如何将 .npy 文件转换为 .binaryproto
- 使用ICEBuilder将ICE文件转换为C++
- 将文件转换为字符串数组C++
- 在编译时将文本文件转换为字符串