我正在做一些简单的事情,我希望它能够将向量中的所有内容放入一个.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;
}
答案 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
时,可能会遇到无法调试的问题。该行不会在循环中执行。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()
函数可确保将任何未决的输出序列写入文件。