【发布时间】:2016-04-30 07:57:11
【问题描述】:
我有几个std::vector 长度为N 和long, string, double 类型。我正在尝试以这种方式将其写入纯文本文件:
int N = 100;
std::vector<std::string> var1String(N), var2String(N), var3String(N), var4String(N);
std::vector<long> var1Long(N);
std::vector<double> var1Double(N);
...
std::ofstream f(path2file);
for(int i=0; i<N; i++)
{
f << var1String[i] << " " << var2String[i] << " " << var1Long[i] << " " << var3String[i] << " " << var1Double[i] << " " << var4String[i] << std::endl;
}
虽然我没有使用ios::binary flag,但它是以二进制形式编写的,我可以在 linux 中轻松读取。但是我想把它写成一个纯 ASCII 文本文件。 (注意:我也尝试过将var1Long[i] 和var1Double[i] 转换为字符串而没有任何区别)。我做错了什么?
编辑:它是一个更大的程序的一部分,它从服务器获取一些输出到 ASCII 中的向量。正如我所说,当使用 linux 读取二进制文件或使用std::cout 而不是f 运行程序时,它打印得很好。我只是不明白是什么导致流作为二进制传递。
【问题讨论】:
-
你能发布一个示例输出吗? (十六进制,ASCII)
-
无法重现,这只是创建一个文本文件? - 请发布实际代码来重现问题,这甚至无法编译(varLong1 未声明)
标签: c++