如何在C ++中提取字符串之间的字符串?

时间:2015-05-11 14:47:37

标签: c++ string extract

我们说我有一个简单的字符串:

string example = "phone number: XXXXXXX,"

其中X是给我的随机值,所以它们总是不同的。 我如何只提取X?  "phone number: "不会改变。

我现在所拥有的(使用下面的Thomas Matthews技术)

const char search_text[] = "phone number: ";
std::string::size_type start_posn = example.find(search_text);
std::string::size_type end_posn = example.find(",", start_posn);
const unsigned int length = end_posn - start_posn - sizeof(search_text) - 1;
cout << "length: " << length << endl;
std::string data = example.substr(start_posn, length);
cout << data << endl;

如果我有string example = "phone number: XXXXXXX, Date: XXXXXXXX,"怎么办?

1 个答案:

答案 0 :(得分:1)

嗯,看起来你会搜索“电话号码:”,然后确定短语后面的索引或位置。您的要求推断出您想要的数据后面有“,”。

所以,你想要在“:”和“,”之前substr。在过去,我们会搜索“,”并获得它的位置。要提取的字符数是通过减去两个索引得到的:
修改1

const char search_text[] = "phone number: ";
std::string::size_type start_posn = example.find(search_text);
if (start_posn != std::string::npos)
{
   start_posn += sizeof(search_text) - 1;
}
std::string::size_type end_posn   = example.find(",", start_posn);
const unsigned int length = end_posn - start_posn;
std::string data = example.substr(start_posn, length);

注意:上述代码不处理find方法返回std::string::npos的错误情况。

使用上述技术,您将如何在“Date:”之后提取数据?