我在std::stol上有问题。我发现的有关std::stolstd::stoi问题的所有答案都在处理C ++ 11编译/构建。

std::string myString;
long myLong = std::stol(myString);


当我使用std::stol()时,出现以下错误:

terminate called after throwing an instance of 'std::invalid_argument'
  what():  stol
Aborted (core dumped)


有任何想法吗?用gcc -std :: C ++ 11构建可以正常工作。
注意:我认为这是我使用的第一个C ++ 11表达式。

最佳答案

当您的字符串不包含可以成功转换为long的有效数字时,这是预期的行为。

为了避免程序被terminate d破坏,您可以将代码包装在try...catch block中并处理异常。

10-06 14:55