我有幾個std::vector
長度N
與long, string, double
類型。我想是這樣寫的純文本文件:使用ofstream寫入二進制沒有ios ::二進制標誌C++
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) – LogicStuff
無法重現,這只是創建一個文本文件? - 請發佈*實際*代碼來重現問題,這甚至不編譯(varLong1未聲明) – stijn