提取 XML 标记中双 qoutes 之间的子字符串

Extracting substring between double qoutes in a XML tag

本文关键字:之间 字符串 qoutes XML 提取      更新时间:2023-10-16

我一直在尝试获取XML标签中的子字符串。字符串:"<Fruits Type="Apple" Quantity="10"></Fruits>"

我只想要子字符串 1 = 苹果子字符串 2 = 10。

string string1 ="<Fruits Type="Apple" Quantity="10"></Fruits>";
 int lPos = string1 .find(""");
 string substring2 = string1.substr(lPos + 1);
 string substring1 = substring2.substr(0, substring2.find("""));
 substring2 = substring2.substr(substring2.find("""), substring2.rfind(""")- substring2.find("""));
 substring2 = substring2.substr(substring2.rfind(""")+1);
 cout<<substring1 << "n" << substring2;

问题是我能够获得预期的输出。但我想知道除了这种方法之外是否有任何有效的方法。

好的,

首先,您没有提供代码,因此它不可能出错。

其次,在你的string1变量中有一个错误,它应该是:

string string1 ="<Fruits Type="Apple" Quantity="10"></Fruits>";

否则它将无法编译。

第三,如果你真的想搜索这样的字符串,可以这样做:

#include <iostream>
#include <string>
static std::string input = "<Fruits Type="Apple" Quantity="10"></Fruits>";
int main()
{
    std::string::size_type begin = input.find('"');
    std::string::size_type end   = input.find('"', ++begin);
    std::string buffer(input, begin, (end - begin));
    std::cout << buffer << std::endl;
    return 0;
}

第四,也是最重要的 - 请善待自己,并使用一些XML库来为您完成。否则,您可能会面临漫长而不眠之夜...