如何正确格式化csv文件?

时间:2018-09-16 15:18:20

标签: 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[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文件,因此不确定,只有名称会显示在文件中,而所有名称都在同一行上。不知道为什么年龄都没有出现:/

2 个答案:

答案 0 :(得分:3)

逗号不会得到这样的输出,您必须将逗号作为要输出的字符包括在内。试试这个

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

代替此

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

如注释中所示,CSV存在各种问题,例如如何处理文本中嵌入的空格或其他异常字符。上面的代码没有解决这些问题,但是对于您的目的也许就足够了。

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

答案 1 :(得分:1)

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

#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;
}