如何要求 stringstream 不要在引号中拆分数据 (C++)
How to ask stringstream don't split data in quotes (C++)
我正在使用 std::stringstream
从 std::string
值中解析一些数据。
此代码:
std::string str = "data1 data2 data3 \"quotated data\"";
std::stringstream ss(str);
如果我使用 ss >> anotherStr;
,我会用 space 分隔每个单词。
我不明白是否有一个选项可以要求 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
我正在使用 std::stringstream
从 std::string
值中解析一些数据。
此代码:
std::string str = "data1 data2 data3 \"quotated data\"";
std::stringstream ss(str);
如果我使用 ss >> anotherStr;
,我会用 space 分隔每个单词。
我不明白是否有一个选项可以要求 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