首页 > 解决方案 > C++,将矢量数据放入 .csv 文件

问题描述

我正在做一些简单的事情,我希望它能够获取向量中的所有内容并将其放入 .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;
}

标签: c++vector

解决方案


由于标记的答案在它要求 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();

推荐阅读