错误:' System.Runtime.InteropServices.SEHException'

时间:2014-04-01 10:52:21

标签: c++

我试图以这种方式打开一个文件,但在标记的行上获得该异常:

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)。

我可以解决这个问题吗?

非常感谢!

1 个答案:

答案 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 }。由于您发布的代码无法做到这一点,我假设您发布的内容不是导致异常的实际代码。