我想我的二進制文件自己閱讀,但我有一些麻煩。現在這是我的了:閱讀本身的C++文件(exe)
#include <iostream>
#include <fstream>
int main(int argc, char * argv[])
{
char data[1000];
std::fstream file(argv[0], std::ios::in | std::ios::binary);
file >> data;
std::cout << data;
system("PAUSE");
return 0;
}
僅打印前3個字符,出於某種原因...就是這樣。我不知道爲什麼它沒有讀取整個文件。任何幫助?
除了其他人指出的,請注意,當使用帶'char'數組的格式化輸入時_shall_設置底層數組的大小!當你做'file >>數據;'沒有設置'file.width()'時,如果在數組的大小用盡之前讀取沒有停止,那麼就有可能發生緩衝區溢出!理想情況下,您應避免直接使用格式化輸入到'char'數組,而是使用'std :: string'。當然,你真正的問題的答案是第三個字節被解釋爲一個空間,你會使用無格式輸入。 –