与std :: string相关的错误并处理它们,c ++

时间:2013-08-12 07:53:02

标签: c++

好吧,这可能是一个愚蠢的问题,但无论如何我会继续问。

所以,我想知道,与std :: string使用相关的所有可能错误是什么?我知道一些,例如访问位置大于各种std :: string函数中的std :: string大小的char。

编程时应记住哪些错误并进行检查?

还有另一种方法可以有效地执行以下操作吗?

std::string s("some string.");

int i = s.find ( "." );


if (  i != std::string::npos    &&  i + 3 < s.length (  )  ) // <<== this check is what I am talking about
    s.erase ( i + 3 );

我有一个程序,需要数百个这样的检查,所以我想知道,如果(some_condition)每次都有另一种方法。

2 个答案:

答案 0 :(得分:2)

您不需要列出整个班级的每个错误案例;只需查看您使用的函数的文档,通常列出前置条件。

例如,cppreference.com's page on std::string::erase

答案 1 :(得分:0)

如果i大于字符串长度,则抛出out_of_range异常

参考: - std::string::erase

所以你总能抓住它!

std::string s("some string.");
int i = s.find ( "." );

if (i != std::string::npos)
try 
{
   s.erase ( i + 3 );
}
catch (const std::out_of_range& err) 
{
  std::cerr << "Out of Range error: " << err.what() << std::endl;
}