C ++,将矢量数据放入.csv文件

时间:2019-03-22 06:48:09

标签: c++ vector

我正在做一些简单的事情,我希望它能够将向量中的所有内容放入一个.CSV文件中,其中每一行将是一个新向量,而列则是该向量中的每个位置。

这是我当前的代码,但是每当我打开CSV文件时,它就完全是空的。

任何帮助将不胜感激!

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ofstream myfile;
    myfile.open("test.csv");

    vector<int> arrayOne = { 10, 20, 30, 40, 50 };


    for (int i = 0; i < arrayOne.size(); i++)
    {
        myfile << arrayOne.at(i) << ",";
    }

    cin.ignore();
    cin.ignore();
    return 0;
}

2 个答案:

答案 0 :(得分:1)

因为标记的答案在OP所要求的功能上是完全正确的,但在代码中却是派生的。这可能导致无法调试的代码或更改OP预期的行为。请考虑以下代码:

#include <iostream>
#include <fstream>
#include <vector>

// removed "using namespace std"

int main()
{
    std::ofstream myfile; // added "std::"
    myfile.open("test.csv");

    std::vector<int> arrayOne { 10, 20, 30, 40, 50 };

    for (int i = 0; i < arrayOne.size(); i++) { // added "{"
        myfile << arrayOne.at(i) << ",";
    } // added "{"

    myfile.close(); // <- note this correction!!
    std::cin.ignore(); // added this
    std::cin.ignore(); // added this
    return 0;
}
  • 考虑不使用using namespace std。该名称空间包括数十万个函数。您可能会与其中之一发生冲突,这很难调试。
  • 带标记的答案将删除{}上的括号for-loop。永远不要这样做,将一行添加到for-loop时,可能会遇到无法调试的问题。该行不会在循环中执行。
  • 答案还会两次从OP中删除重要代码:std::cin.ignore();

答案 1 :(得分:-2)

像这样关闭文件:

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ofstream myfile;
    myfile.open("test.csv");

    vector<int> arrayOne = { 10, 20, 30, 40, 50 };

    for (int i = 0; i < arrayOne.size(); i++)
        myfile << arrayOne.at(i) << ",";

    myfile.close();
    return 0;
}

这里的要点是,输出流通常被缓冲。关闭文件时,close()函数可确保将任何未决的输出序列写入文件。