c ++从字符串中提取两个引号

时间:2017-10-10 08:24:30

标签: c++ string

我有一个字符串

  

"约翰" "你好,#34;

我希望将引号提取为两个字符串,以便我可以将它们归类为。

User: John 
Text: Hello there

我想知道最好的办法是什么?是否有一个字符串函数可以应用于使这个过程变得简单?

2 个答案:

答案 0 :(得分:3)

使用std::quotedhttp://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