【发布时间】:2012-07-03 12:31:04
【问题描述】:
我有一个函数可以逐行读取 CSV 文件。对于每一行,它将该行拆分为一个向量。执行此操作的代码是
std::stringstream ss(sText);
std::string item;
while(std::getline(ss, item, ','))
{
m_vecFields.push_back(item);
}
这工作正常,除非它读取最后一个值为空白的行。例如,
text1,tex2,
我希望它返回一个大小为 3 的向量,其中第三个值为空。但是,它只是返回一个大小为 2 的向量。我该如何纠正这个问题?
【问题讨论】:
-
CSV parser in C++ 的可能重复项
-
不,不是。如果该行以逗号结尾,则该代码的作用完全相同
-
不是分隔符的问题吗?
std::getline提取直到找到分隔符。但是对于最后一项,没有下一个分隔符,,因此没有提取任何内容,因此 while 循环结束。 -
@Jonnster:仅仅因为当前接受的答案有缺陷并不意味着另一个问题没有充分解决相同的问题空间 - 还有其他答案应该有效并且可以被投票,你可以用具体答案评论问题。