Article ID: 168440
Article Last Modified on 5/26/2005
APPLIES TO
- The Standard C++ Library, when used with:
- Microsoft Visual C++ 5.0 Enterprise Edition
- Microsoft Visual C++ 6.0 Enterprise Edition
- Microsoft Visual C++ 5.0 Professional Edition
- Microsoft Visual C++ 6.0 Professional Edition
- Microsoft Visual C++ 6.0 Standard Edition
This article was previously published under Q168440
SYMPTOMS
If you try to pass an __int64 variable to the ostream operator <<, you get the following error:
CAUSE
There is no operator << for __int64 type defined for the ostream class.
RESOLUTION
Define your own version of operator <<. The following sample code section shows a simple solution for << operator that converts the __int64 variable to a char * type and passes it to the ostream << operator.
STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.
This problem was corrected in Microsoft Visual C++ .NET.
MORE INFORMATION
The following sample program demonstrates the problem and workaround:
//Sample.cpp // Compiler Options : /GX //#define WORKAROUND //Uncomment this line to workaround #include<iostream> using namespace std; #ifdef WORKAROUND std::ostream& operator<<(std::ostream& os, __int64 i ) { char buf[20]; sprintf(buf,"%I64d", i ); os << buf; return os; } #endif int main(){ __int64 i64; cout << i64 ; return 0; }
Keywords: kberrmsg kbbug kbfix kbcrt kbnoupdate KB168440