【发布时间】:2014-04-22 23:37:40
【问题描述】:
这似乎是一个应该很容易搜索的问题,但那里的任何答案似乎都被一大堆问题所淹没.
我的问题是:从std::strings 中提取可能看起来像"abcd451efg" 或"hel.lo42-world!" 或"hide num134rs here?" 的整数的简单方法是什么?我看到我可以使用isDigit 自己手动解析字符串,但是我想知道atoi或stoi等是否有更标准的方式。
上面的输出将是 451、42 和 134。我们还可以假设字符串中只有一个整数(尽管一般的解决方案不会有坏处)。所以我们不必担心像"abc123def456"这样的字符串。
Java 有一个简单的解决方案,形式为
Integer.parseInt(str.replaceAll("[\\D]", ""));
C++ 有这么简单的东西吗?
【问题讨论】:
-
std::regex_replace怎么样? -
它只适用于 C++11,而且大多数支持 C++11 的编译器还不支持正则表达式部分。我认为只有 g++4.9 完全支持正则表达式。
标签: c++ string parsing split atoi