我一直试图在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;
我能得到预期的输出。但是我想知道的是,除了这种方法之外,还有没有其他有效的方法。
答案 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库为您做到这一点。否则,您可能会面临漫长而无眠的夜晚。