我要输出相当多的变量为ASCII文件,这里是我怎么做,现在一个例子:输出几个变量到ASCII文件在一个循环中
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream file;
file.open("output.txt", ios_base::out);
int a = 1;
int b = 3;
int c = 3453;
double d = 5.3;
string e = "a";
double f = 231.09;
file << "\"a\":" << a << endl;
file << "\"b\":" << b << endl;
file << "\"c\":" << c << endl;
file << "\"d\":" << d << endl;
file << "\"e\":" << e << endl;
file << "\"f\":" << f << endl;
file.close();
return 0;
}
输出的格式在ASCII文件中如上所示:变量的名称后跟其值。
问题:有没有一种方法来自动化这个过程,比如说,在一个循环中,所以我不必手动输入它并混乱我的文件?我希望这样的解决方案要求:
- 制作一个包含所有变量名称的列表:
{a, b, c, d, e, f}
- 通过这个列表,并为每个元素
i
运行一个循环后字符串file << ToString[element i] << element i << endl;
我我很乐意得到关于如何专业进行这项工作的暗示。这甚至可以用C++吗?
即使您不知道它们的值,您是否知道要输出的变量的类型,数量和顺序?换句话说,你能否定义一个实际的'struct'?如果您可以提前定义数据结构,则可以为其创建一个基本的序列化函数,以创建要写入文件的字符串。如果你不能提前定义它,你将不得不跳过更多的箍环(我会研究'std :: map'东西)。实际上任何事情都可以在C++中完成,你可能必须自己完成大部分工作;)。 – Treebasher
因为你的变量是不同类型的,所以如果你想把它们放在一个列表(向量)中,你首先需要将它们封装到一个结构体或一个有区别的联合体中(或者我从未使用过的C++ 17中的std :: variant )。该程序不知道你的变量名称,永远不会,所以你的结构将需要保存变量的名称 – AlexG