我有一个字符串
"约翰" "你好,#34;
我希望将引号提取为两个字符串,以便我可以将它们归类为。
User: John
Text: Hello there
我想知道最好的办法是什么?是否有一个字符串函数可以应用于使这个过程变得简单?
答案 0 :(得分:3)
使用std::quoted
:http://en.cppreference.com/w/cpp/io/manip/quoted
<强> Live On Coliru 强>
#include <iomanip>
#include <sstream>
#include <iostream>
int main() {
std::string user, text;
std::istringstream iss("\"John\" \"Hello there\"");
if (iss >> std::quoted(user) >> std::quoted(text)) {
std::cout << "User: " << user << "\n";
std::cout << "Text: " << text << "\n";
}
}
请注意,它还支持转义引号:如果输入为Me "This is a \"quoted\" word"
,则会打印(同时 Live )
User: Me
Text: This is a "quoted" word
答案 1 :(得分:1)
这是一种使用stringstream
的可能解决方案:
std::string name = "\"Jhon\" \"Hello There\"";
std::stringstream ss{name};
std::string token;
getline(ss, token, '\"');
while (!ss.eof())
{
getline(ss, token, '\"');
ss.ignore(256, '\"');
std::cout << token << std::endl;
}
输出:
Jhon
Hello There