gpt4 book ai didi

C++ CSV 行,双引号内有逗号和字符串

转载 作者:太空狗 更新时间:2023-10-29 21:16:16 29 4
gpt4 key购买 nike

我正在用 C++ 读取 CSV 文件,行格式如下:

"一级、二级、三级", "一级", , "二级", 18, 4, 0, 0, 0

(注意空值)

当我这样做时:

while (std::getline(ss, csvElement, ',')) {
csvColumn.push_back(csvElement);
}

这将第一个字符串分成了不正确的部分。

如何在迭代时保留字符串?我尝试将上述内容结合起来,同时也捕获了用双引号分隔的行,但我得到了疯狂的结果。

最佳答案

使用 std::quoted 允许您从输入流中读取带引号的字符串。

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

int main() {
std::stringstream ss;
ss << "\"Primary, Secondary, Third\", \"Primary\", , \"Secondary\", 18, 4, 0, 0, 0";

while (ss >> std::ws) {
std::string csvElement;

if (ss.peek() == '"') {
ss >> std::quoted(csvElement);
std::string discard;
std::getline(ss, discard, ',');
}
else {
std::getline(ss, csvElement, ',');
}

std::cout << csvElement << "\n";
}
}

Live Example

需要注意的是,仅当值的第一个非空白字符是双引号时,才会提取带引号的字符串。此外,引号字符串之后的任何字符都将被丢弃,直到下一个逗号。

关于C++ CSV 行,双引号内有逗号和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639083/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com