के बीच istream eof विसंगति libstdC++ और libC++ के विरुद्ध लिंक होने पर निम्न (खिलौना) प्रोग्राम अलग-अलग चीजें देता है। क्या यह libC++ में एक बग है या क्या मैं समझ नहीं पा रहा हूं कि etream eof() कैसे काम करता है? मैंने लिनक्स और मैक ओएस एक्स पर g ++ का उपयोग करके इसे चलाने की कोशिश की है और मैक ओएस एक्स पर क्लैंग, बिना और -dd = C++ 0x के साथ। यह मेरी धारणा थी कि eof() पढ़ने के प्रयास तक सत्य नहीं लौटाता है (प्राप्त करें() या कुछ और) वास्तव में विफल रहता है। इस प्रकार libstdC++ व्यवहार करता है, लेकिन libC++ व्यवहार कैसे नहीं करता है।libC++ और libstdC++
#include <iostream>
#include <sstream>
int main() {
std::stringstream s;
s << "a";
std::cout << "EOF? " << (s.eof() ? "T" : "F") << std::endl;
std::cout << "get: " << s.get() << std::endl;
std::cout << "EOF? " << (s.eof() ? "T" : "F") << std::endl;
return 0;
}
Thor:~$ g++ test.cpp
Thor:~$ ./a.out
EOF? F
get: 97
EOF? F
Thor:~$ clang++ -std=c++0x -stdlib=libstdc++ test.cpp
Thor:~$ ./a.out
EOF? F
get: 97
EOF? F
Thor:~$ clang++ -std=c++0x -stdlib=libc++ test.cpp
Thor:~$ ./a.out
EOF? F
get: 97
EOF? T
Thor:~$ clang++ -stdlib=libc++ test.cpp
Thor:~$ ./a.out
EOF? F
get: 97
EOF? T
मुझे जल्द ही अन्य उत्तरों की जांच करनी चाहिए! – Cubbi