如何要求字符串流不要在引号中拆分数据 (C++)

How to ask stringstream don't split data in quotes (C++)

本文关键字:拆分 数据 C++ 字符串      更新时间:2023-10-16

我使用std::stringstreamstd::string值解析一些数据
此代码:

std::string str = "data1 data2 data3 "quotated data"";
std::stringstream ss(str);

如果我使用ss >> anotherStr;,我会得到用空格分隔的每个单词
我不明白有没有一个选项可以要求stringstream将引号中的数据读取为单个字符串值?

std::quoted io操纵器正是您所需要的。

这里有一个方便的参考:http://en.cppreference.com/w/cpp/io/manip/quoted

以及一个工作示例:

#include <iostream>
#include <sstream>
#include <iomanip>

int main()
{
    using namespace std;
    std::string str = "data1 data2 data3 "quotated data"";
    std::stringstream ss(str);
    std::string s;
    while (ss >> std::quoted(s))
    {
        std::cout << s << std::endl;
    }
    return 0;
}

预期输出:

data1
data2
data3
quotated data