快速方法在数字的第一个符号分割字符串

时间:2014-10-23 19:37:41

标签: c++ string

我有一个需要解析的数据列表,其中包含文本文件中的名称和电话号码。名称和电话号码必须分成不同的字符串变量,但我真的不能想到一个快速的方法。我可以轻松地运行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 ++中必须有一个简单的方法。

1 个答案:

答案 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));

Demo.

请注意,如果您希望将子字符串带到原始字符串的末尾,则不需要传递长度:库会自动为您计算出来。