我要輸出相當多的變量爲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