我有一个包含一组数字的文件,例如20.该文件的内容是社会安全号码,我试图删除每个' - '。虽然在浏览文件时我收到以下错误。
libc ++ abi.dylib:以std :: out_of_range类型的未捕获异常终止:basic_string
这是代码
string str;
ifstream inFile (fName);
//fName= name of the file
if (inFile.is_open())
{
while ( getline (inFile,str) )
{
cout << str << endl;
str.erase(3,1);//erasing first '-'
str.erase(5,1);//erasing second '-'
cout << str << endl;
}
inFile.close();
}
else
cout << "Unable to open file";
答案 0 :(得分:3)
我建议您在代码中添加一些检查,这样您就不会假设有两个'-'
位于您希望找到它们的位置。
if ( str.size() >= 4 && str[3] == '-' )
{
str.erase(3,1);
if ( str.size() >= 6 && str[5] == '-' )
{
str.erase(5,1);
}
else
{
std::cout << "Did not find a '-' at the 6-th position of the string.\n";
std::cout << str << std::endl;
}
}
else
{
std::cout << "Did not find a '-' at the 4-th position of the string.\n";
std::cout << str << std::endl;
}