从输入文件创建子字符串时出错
Error creating substrings from input file
我试图从我的输入文件的每一行创建子字符串。
我注意到,当我从substr(0,2)位置0创建子字符串时,它会正确打印出来,但如果我从大于0的任何地方开始,它会抛出这个错误:
libc + + abi。以未捕获的std::out_of_range: basic_string类型异常结束
我也在阅读这种格式的行40AF FF A9
int main()
{
string STRING;
ifstream infile;
infile.open("test-file.txt");
while(!infile.eof())
{
getline(infile, STRING);
string tag = STRING.substr(2,2);
cout << tag << endl;
}
return 0;
substr
()方法在c++标准中定义如下:
21.4.7.8 basic_string::substr [string::substr]
basic_string
substr(size_type pos = 0, size_type n = npos) const; 1 Requires: pos <= size() 2 Throws: out_of_range if pos > size().
因此,substr
()方法的第一个参数pos
必须小于或等于size
(),即std::basic_string
类实例的大小。
将"2"传递给"pos"形参,因此如果字符串长度小于2个字符,此方法将抛出异常。
如果您的代码从文件中读取空行,则字符串的size
()将小于2,并且您的代码将抛出异常。
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么 stl 字符串C++函数有时出错有时会出错?
- 读取字符串C++的字符时出错
- 读取字符串字符时出错 - 对于数组中的字符串值
- 通过字符串::插入插入字符时出错
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- 读取字符串字符时出错
- 计算字符串中字符的出现次数时出错
- 在字符串中反转元音时出错
- C++ 使用 Strtok 读取字符串字符时出错
- 在 c++ 中调用将字符串作为参数传递的函数时出错
- 使用 C++Builder 项目读取字符串中的文件时出错
- 在字符串流中使用来自 github 的代码时出错
- C ++ ifstream 无法读取字符串,并且在读取字符时出错
- 从字符串中读取字符时出错
- std::out_of_range 比较字符串中的符号时出错