Как отловить исключение substr? - PullRequest
1 голос
/ 17 мая 2011

Я использую substr для генерации подстроки.Как я могу поймать исключение substr?Например:

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

Ответы [ 3 ]

8 голосов
/ 17 мая 2011

Как это:

try
{
  /// use substr
}
catch( std::out_of_range& exception )
{
   // print out an error, and fail, or restart if appropriate.
}
5 голосов
/ 17 мая 2011

substr выдает исключение вне диапазона, если его первый параметр (начальная позиция подстроки) превышает длину строки, к которой он применяется:

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

Итак, очевидное решение - не писать код, в котором может возникнуть второй случай.

5 голосов
/ 17 мая 2011
try
{
    std::string sub = mystring.substr(10,1);
}
catch (std::out_of_range & ex)
{
    cout << "caught exception!" << endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...