我试图从字符串中读取数字,例如 如果
string str = "1Hi15This10";
我想得到(1,15,10)
我通过索引尝试但是我将10读为1而0不是10。
我无法使用getline
因为字符串没有被任何东西分开。
有什么想法吗?
答案 0 :(得分:1)
没有正则表达式,你可以这样做
std::string str = "1Hi15This10";
for (char *c = &str[0]; *c; ++c)
if (!std::isdigit(*c) && *c != '-' && *c != '+') *c = ' ';
整数现在由空格分隔符分隔,这对于解析
来说是微不足道的答案 1 :(得分:0)
恕我直言,最好的方法是使用正则表达式。
#include <iostream>
#include <iterator>
#include <string>
#include <regex>
int main() {
std::string s = "1Hi15This10";
std::regex number("(\\d+)"); // -- match any group of one or more digits
auto begin = std::sregex_iterator(s.begin(), s.end(), number);
// iterate over all valid matches
for (auto i = begin; i != std::sregex_iterator(); ++i) {
std::cout << " " << i->str() << '\n';
// and additional processing, e.g. parse to int using std::stoi() etc.
}
}
输出:
1
15
10
是的,您可以为此编写自己的循环,但是: