0

我正在使用ofstreamlike将一些字符串数据写入 .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

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

4

3 回答 3

1

你可以先这样做:

out << setiosflags(ios::left) << setw(20)&lt;< "ROW-1" << setiosflags(ios::left) << setw(20) << "ROW-2" << "\n";
于 2013-07-25T08:48:16.630 回答
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";
}
于 2013-07-25T08:54:25.170 回答
0

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

out <<"Col-1"<< " "<<"Col-2"<< "\n" ;
于 2013-07-25T08:49:23.700 回答