我有一段在gcc,VS2010上運行良好的代碼。我試圖在VS2012中編譯相同的代碼。我知道我的設置在任何地方都是成立的,但它不是實際的代碼。我縮短了重現問題的代碼。stream seekg()實現從VS2012到2010不等
std::ifstream file_stream;
file_stream.open("C:\\experiment\\file.txt", std::ios_base::in);
std::istream& stream = file_stream;
bool done = false;
while(stream.good() || !done){
int stream_position = stream.tellg();
bool stream_failure = (stream_position == -1);
bool stream_eof = stream.eof();
std::string line;
std::getline(stream, line);
std::cout << stream_failure << stream_eof << std::endl;
std::streampos pos = stream.tellg();
if(pos == std::streampos(-1)){
std::streampos copy = pos;
stream.seekg(0, std::ios_base::end);
pos = stream.tellg();
stream.seekg(copy);
}
}
std::getline(std::cin, std::string());
file_stream.close();
如果我改變平臺的工具包,VS2010到位的stream_eof
作品和版畫1
如果我改變平臺的工具包,VS2012它代替stream_eof
不和打印0
已經達到後EOF
如果我把一個if(stream_eof)return 0;
COUT後返回上VS2010但在VS2012
「效果很好海合會」 ---不適合我。 – 2013-02-09 19:59:49