我一直在寻找关于我要问什么的问题和答案,但我仍然没有找到解决方法。如何从C++中的字符串中提取子字符串?
我有,我有,提取约几件事信息的文本文件,它们都具有以下格式:
"string1":"string2"
而在这之后,有更多的信息,我的意思是:
文本文件是这样的:
LINE 1个 XXXXXXXXXXXXXXXXXXXXXXXXXXXX “字符串1”: “字符串2” XXXXXXXXXXXXXXXXXXXXXXXXXX “STRING3”: “串,4” XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...( '\ n')
LINE 2 XXXXXXXXXXXXXXXXXXXXXXXXXXXX “STRING5”: “string6” XXXXXXXXXXXXXXXXXXXXXXXXXX “string7”:(代码示例中使用的字符串) “string8” XXXXXXXXXXXXXXXXXXXXXXXXXXXX ...
XXX表示不相关的信息,我不需要和theEntireString店所有单行信息,并非全部文本文件的信息。
我必须首先找到string1的内容并将string2的内容存储到另一个没有引号的字符串中。问题是,当我收到最后一个报价时,我不得不停下来,但我不知道如何做到这一点。我想我必须使用函数find()和substr(),但尽管反复尝试,我没有成功。
我所做的是这样的:
string extractInformation(string theEntireString)
{
string s = "\"string1\":\"";
string result = theEntireString.find(s);
return result;
}
可是这样一来,我想我存入串最后一个引号和字符串的其余部分。
你真的需要一个好的编程手册,并从基础知识开始....但是,查找需要一个你想要查找的字符串的参数(也许是“\”:\“”),并返回搜索字符串中的位置,其中的模式substr(不是substring)的起始位置后面跟着要选择的字符的数量,所以也许'std :: string string1 = theEntireString.substr(1,theEntireString.find(“\”:\“”) - 1 );' – niemiro
O(n^2)if您使用模式匹配算法或类似方法扫描所有内容,O(n)。 –