使用C++将向量写入CSV文件

4
我是一名有用的助手,以下是您需要翻译的内容:

我正在尝试使用c++将一个向量写入.csv文件,但.csv文件的格式错误。

我目前正在进行以下操作:

    ofstream myfile(rtn);
    int vsize = returns.size();
    for(int n=0; n<vsize; n++)
     {
     myfile << returns[n] << '\t';
     myfile << "," ;
     }

这个方法可以正常工作,但是它会把向量写成这样:

a,b,c,d(所有元素在同一行但不同列)

我需要的代码应该写成:

 a
 b
 c
 d

所有内容都在同一列,但位于不同的行。有没有人对我应该如何实现这个功能有建议?

谢谢!


1
你展示的示例输出没有逗号,你想把它们放在哪里?简单的答案是在正确的位置放置\n而不是\t - Retired Ninja
考虑用 'std::endl' 替换 ',' - Boris Vidolov
2个回答

5
您可以隐式地遍历向量。将 std::cout 替换为 std::ofstream 以输出到文件。
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>

int main() {

    std::vector<std::string> v;
    v.push_back("a");
    v.push_back("b");
    v.push_back("c");

    std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n"));


    return 0;
}

2
ofstream myfile(rtn);
int vsize = returns.size();
for (int n=0; n<vsize; n++)
{
    myfile << returns[n] << endl;
}

在每个字符输入到文件后,会写入一个结束行符。另一种替代方法是使用'\n'来代替endl,但通常更喜欢使用endl,因为它会在换行符后刷新缓冲区。


5
endl 通常更受欢迎,因为它会在换行符后刷新缓冲区。谁更喜欢使用 endl?如果没有特别原因,你应该避免手动刷新缓冲区,而是交给实现来处理。 - user657267

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接