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

how to set column name to csv file - c++

本文关键字:csv 文件 -c++ 设置      更新时间:2023-10-16

我正在使用类似的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

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

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

您可以先这样做:

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

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

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