[英]R6010 Error When Using; std::stoi
我一直收到错误R6010 - abort() has been called.
从std::stoi()
调用中,现在找出原因,首先显示手头的代码;
std::string str;
for (int i = 0; i < numberofvalues; i++)
{
str = cmemblock[i];
if (cmemblock[i] == '\n' || cmemblock[i] == '\r')
{
cout << cmemblock[i] << endl;
}
else
{
int number = std::stoi(str);
cout << number;
}
}
该程序在此阶段的目的是读取.txt文件并以int格式显示输出,如果.txt文件包含多于1行数据,则会发生错误。
我还应该注意, cmemblock
是以cmemblock
格式存储的文本文件。
我需要一些有关如何以int格式表示所有数据行的指导。
std::stoi()
期望在传递的std::string
参数中看到单个数字输入,例如:
int x = std::stoi("12345");
不需要多余的字符,行尾,多行等。 您也可以使用从str
初始化的std::istringstream
:
std::string str = &(cmemblock[0]);
std::istringstream iss(str);
int number;
if(!(iss >> number)) {
// print error ...
}
要随后读取更多值(由空格或'\\n'
分隔),您还可以进行循环:
std::vector<int> numbers;
int number;
while(iss >> number) {
// collect inputs
numbers.push_back(number);
}
if(!iss.eof()) {
// input format error occurred ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.