如何正确格式化csv文件?

How to format csv file properly?

本文关键字:文件 csv 格式化 何正确      更新时间:2023-10-16
#include <fstream>
#include <iostream>
#include <string>
int main()
{
std::ofstream myfile;
const int numberOfInputs = 9;
std::string nameArray[numberOfInputs] = {""};
int ageArray[numberOfInputs] = {0};
for(int i = 0; i < numberOfInputs; ++i)
{
std::cout << "Enter a name: ";
std::getline(std::cin, nameArray[i]);
std::cout << "Enter an age: ";
std::cin >> ageArray[i];
std::cin.get();
myfile << nameArray[i], ageArray[i], " n";
}
myfile.open("People.csv");
myfile << "Name, Age, n";
myfile << nameArray[1], ageArray[1], " n";
myfile << nameArray[2], ageArray[2], " n";
myfile << nameArray[3], ageArray[3], " n";
myfile << nameArray[4], ageArray[4], " n";
myfile << nameArray[5], ageArray[5], " n";
myfile << nameArray[6], ageArray[6], " n";
myfile << nameArray[7], ageArray[7], " n";
myfile << nameArray[8], ageArray[8], " n";
myfile << nameArray[9], ageArray[9], " n";
myfile.close();
return 0;
}

有人可以解释我做错了什么吗?我以前从未使用过CSV文件,所以我不确定,只有名称显示在文件中,但它们都在同一行上。不知道为什么年龄也没有显示:/

逗号不会像那样获得输出,您必须将逗号作为字符包含在内才能输出。试试这个

myfile << nameArray[1] << ',' << ageArray[1] << ",n";

而不是这个

myfile << nameArray[1], ageArray[1], " n";

如评论中所述,CSV存在各种问题,例如如何处理嵌入文本中的空格或其他异常字符。上面的代码没有解决这些问题,但也许它足以满足您的目的。

你还有另一个错误,输出语句中的数组索引从 1 到 9,它们应该从 0 到 8,因为 C++ 中的数组从零开始。

@john的答案是正确的,此外,如果任何数组索引从 0 开始,您必须在[0]处启动nameArray[]ageArray[]的索引,而不是在[1]处C++:

#include <fstream>
#include <iostream>
#include <string>
int main()
{
std::ofstream myfile;
const int numberOfInputs = 9;
std::string nameArray[numberOfInputs] = {""};
int ageArray[numberOfInputs] = {0};
for(int i = 0; i < numberOfInputs; ++i)
{
std::cout << "Enter a name: ";
std::getline(std::cin, nameArray[i]);
std::cout << "Enter an age: ";
std::cin >> ageArray[i];
std::cin.get();
myfile << nameArray[i], ageArray[i], " n";
}
myfile.open("People.csv");
myfile << "Name, Age, n";
myfile << nameArray[0] << ',' << ageArray[0] << 'n';
myfile << nameArray[1] << ',' << ageArray[1] << 'n';
myfile << nameArray[2] << ',' << ageArray[2] << 'n';
myfile << nameArray[3] << ',' << ageArray[3] << 'n';
myfile << nameArray[4] << ',' << ageArray[4] << 'n';
myfile << nameArray[5] << ',' << ageArray[5] << 'n';
myfile << nameArray[6] << ',' << ageArray[6] << 'n';
myfile << nameArray[7] << ',' << ageArray[7] << 'n';
myfile << nameArray[8] << ',' << ageArray[8] << 'n';
myfile.close();
return 0;
}