我试图以这种方式打开一个文件,但在标记的行上获得该异常:
std::string str = "c:/qsdqsdsq/qsdqsdsq/qsdqsd.txt+++++qsdqsdqsd";
FILE *abc = fopen(str.substr(0, str.find_first_of("+++++")).c_str(), "w+b"); // marked line
例外:
未处理的类型异常 Project.exe中发生'System.Runtime.InteropServices.SEHException'
其他信息:外部组件引发了异常。
调试器指向}
文件的第2296行(仅_Xout_of_range("invalid string position");
行之后的xstring
)。
我可以解决这个问题吗?
非常感谢!
答案 0 :(得分:0)
如果start
不在[0, str.length)
范围内或start + length
不在[0, str.length]
范围内,则会引发此异常。如果start
为0且find_first_of
返回有效索引,则std::string::npos
如果在这种情况下找不到任何字符,则表示std::string::npos
已返回find_first_of
}。由于您发布的代码无法做到这一点,我假设您发布的内容不是导致异常的实际代码。