00001 #ifndef OW32_stringstream_h 00002 #define OW32_stringstream_h 00003 00004 #include <iostream> 00005 #include <string> 00006 #include <OW32/auto_array_ptr.h> 00007 00008 inline std::istream& operator>>(std::istream& is, std::wstring& str) 00009 { 00010 size_t count; 00011 is.read((char*)&count,sizeof(count)); 00012 if (!is.good()) 00013 return is; 00014 00015 if (count > 0) { 00016 OW32::auto_array_ptr<wchar_t> buf(new wchar_t[count+1]); 00017 is.read((char*)buf.get(), count * sizeof(wchar_t)); 00018 buf[count] = L'\0'; 00019 str = buf.get(); 00020 } else { 00021 str = L""; 00022 } 00023 return is; 00024 } 00025 00026 inline std::ostream& operator<<(std::ostream& os, const std::wstring& str) 00027 { 00028 size_t count=str.length(); 00029 os.write((char*)&count,sizeof(count)); 00030 if (count > 0) 00031 os.write((char*)str.c_str(), count * sizeof(wchar_t)); 00032 return os; 00033 } 00034 00035 #endif // OW32_stringstream_h