繁体   English   中英

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

[英]C++, putting vector data into a .csv file

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

由于标记的答案在功能上是完全正确的,因此它要求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();

像这样关闭文件:

#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()函数可确保将任何未决的输出序列写入文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM