如何捕获substr异常?

时间:2011-05-17 15:17:46

标签: c++ string exception stl

我正在使用substr来生成子字符串。我怎样才能捕获substr异常?例如:

terminate called after throwing an instance of 'std::out_of_range'

3 个答案:

答案 0 :(得分:7)

像这样:

try
{
  /// use substr
}
catch( std::out_of_range& exception )
{
   // print out an error, and fail, or restart if appropriate.
}

答案 1 :(得分:5)

try
{
    std::string sub = mystring.substr(10,1);
}
catch (std::out_of_range & ex)
{
    cout << "caught exception!" << endl;
}

答案 2 :(得分:5)

如果第一个参数(子字符串的起始位置)大于它所应用的字符串的长度,

substr会抛出一个超出范围的异常:

string s = "foo";
s.substr( 1 );   // ok
s.substr( 5 );   // exception

因此,显而易见的解决方案是不要在第二种情况下编写代码。