我有一个需要解析的数据列表,其中包含文本文件中的名称和电话号码。名称和电话号码必须分成不同的字符串变量,但我真的不能想到一个快速的方法。我可以轻松地运行for循环并执行类似
的操作//file line read into string `line`
string name;
string number;
for(int i = 0; i < line.length(); i++) {
if(isDigit(line[i])) {
name = line.substr(0, i-1);
number = line.substr(i, line.length()-i);
}
}
但我觉得在C ++中必须有一个简单的方法。
答案 0 :(得分:3)
您可以使用find_first_of
查找第一个数字而不使用循环:
string s("hello12345");
size_t i = s.find_first_of("0123456789");
string name(s.substr(0, i));
string number(s.substr(i));
请注意,如果您希望将子字符串带到原始字符串的末尾,则不需要传递长度:库会自动为您计算出来。