在XML标签中的双qout之间提取子字符串

时间:2019-04-09 07:54:06

标签: c++ substring

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

我只想要 substring1 =苹果 substring2 = 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;

我能得到预期的输出。但是我想知道的是,除了这种方法之外,还有没有其他有效的方法。

1 个答案:

答案 0 :(得分:0)

好吧

首先,您没有提供任何代码,因此它不可能出什么毛病。

第二,在您的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库为您做到这一点。否则,您可能会面临漫长而无眠的夜晚。