从输入文件创建子字符串时出错
Error creating substrings from input file
我正在尝试从输入文件的每一行创建子字符串。
我注意到,当我从 substr(0,2) 位置零创建子字符串时,它会正确打印出来,但如果我从大于 0 的任何地方开始,它会抛出此错误:
libc++abi.dylib:终止并出现 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().
所以,pos
参数,substr
()方法的第一个参数,必须小于等于size
(),std::basic_string
class 实例.
您正在为 "pos" 参数传递“2”,因此如果您的字符串长度少于 2 个字符,此方法将抛出异常。
如果您的代码从文件中读取一个空行,字符串的 size
() 将小于两个,您的代码将抛出异常。
我正在尝试从输入文件的每一行创建子字符串。
我注意到,当我从 substr(0,2) 位置零创建子字符串时,它会正确打印出来,但如果我从大于 0 的任何地方开始,它会抛出此错误:
libc++abi.dylib:终止并出现 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().
所以,pos
参数,substr
()方法的第一个参数,必须小于等于size
(),std::basic_string
class 实例.
您正在为 "pos" 参数传递“2”,因此如果您的字符串长度少于 2 个字符,此方法将抛出异常。
如果您的代码从文件中读取一个空行,字符串的 size
() 将小于两个,您的代码将抛出异常。