當試圖想出一個答案this question,我寫了這個小測試程序:使用int作爲字符類型的iostreams可以嗎?
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
void writeFile() {
int data[] = {0,1,2,3,4,5,6,7,8,9,1000};
std::basic_ofstream<int> file("test.data", std::ios::binary);
std::copy(data, data+11, std::ostreambuf_iterator<int>(file));
}
void readFile() {
std::basic_ifstream<int> file("test.data", std::ios::binary);
std::vector<int> data(std::istreambuf_iterator<int>(file),
(std::istreambuf_iterator<int>()));
std::copy(data.begin(), data.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
int main()
{
writeFile();
readFile();
return 0;
}
它按預期工作,將數據寫入文件,並讀取一個文件後,它打印正確:
0 1 2 3 4 5 6 7 8 9 1000
但是,我不知道是否有任何缺陷(字節序問題放在一邊,你總是有這些二進制數據打交道時)?這是否允許?
嗯,這證實了我的懷疑。 – 2011-03-31 09:19:30
這意味着,如果我真的想要的話,我可以專門爲''char_traits'自己int'。 – 2011-03-31 10:13:18
+1,雖然我認爲這是非常明顯的預期。 – 2011-03-31 10:29:49