如何将列名设置为csv文件 - c ++

时间:2013-07-25 08:42:35

标签: c++ csv

我正在使用ofstream之类的

将一些字符串数据写入.csv文件
out << string-A << "," <<  string-B << "\n" ;

但是,我找不到设置.csv文件列名的方法。

我的意思是,我想将字符串-A的列名称(比如说)Col-1和字符串-B给(比方说)Col-2。

如何在c ++中做到这一点(我不想使用任何库)。我在Windows环境中工作。

编辑:我希望格式如下:

Col-1         col-2
1              4
2              5
3              6
4              7

列名是标题而不是单元格值?

3 个答案:

答案 0 :(得分:1)

你可以先这样做:

out << setiosflags(ios::left) << setw(20)<< "ROW-1" << setiosflags(ios::left) << setw(20) << "ROW-2" << "\n";

答案 1 :(得分:1)

out << "Col-1" << "," << "col-2" << "\n";
out << "1"     << "," << "4"     << "\n";
out << "2"     << "," << "5"     << "\n";
out << "3"     << "," << "6"     << "\n";
out << "4"     << "," << "7"     << "\n";

由于它是一个文本文件,您可以编写每一行,与数据无关(即,如果它是标题/列名称或数据行)。

但是,您可能希望将数据写为循环,例如:

out << "Col-1" << "," << "col-2" << "\n";
for (var x = 1; x < 5; x++)
{
    out << x.ToString() << "," << (x + 3).ToString() << "\n";
}

同样在读取数据时,您想跳过列名称。为此,您可以默认跳过第一行,或者使用#等“注释”字符并动态跳过它。在这种情况下,文件的输出应如下所示:

#Col-1         col-2
1              4
2              5
3              6
4              7

以及产生此代码的代码:

out << "#Col-1" << "," << "col-2" << "\n";
for (var x = 1; x < 5; x++)
{
    out << x.ToString() << "," << (x + 3).ToString() << "\n";
}

答案 2 :(得分:0)

您可以像编写数据一样编写名称。你必须在开始时这样做。 但是,根据数据字符串的宽度,您需要进行一些格式化以便数据正确 在Col-1和Col-2下方对齐。

out <<"Col-1"<< " "<<"Col-2"<< "\n" ;