我正在运行此代码:
*
ifstream trace_file;
trace_file.open (argv[7]);
while (!trace_file.eof())
{
string line;
getline (trace_file,line);
string read_write = line.substr(0,1);
string address = line.substr(2);
cout << line << '\t' << read_write << "-->" << address<< "-->" << line.size() << '\n';
}
*
我通过ifstream阅读的文件包含以下内容:
r 4fd
w f47
r 8d2
w f05
我得到了这个输出:
r 4fd r-->4fd-->5
w f47 w-->f47-->5
r 8d2 r-->8d2-->5
w f05 w-->f05-->5
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Abort (core dumped)
如果删除此行,它会正常运行:
string address = line.substr(2);
每个字符串的长度为5,因此不应抛出此异常。
如果我保持pos = 0
,它运行正常对于pos = 1或2或3,我得到了这个例外。
我不明白这里有什么问题。任何帮助将不胜感激。