作者milochen (4/100天自我觀察)
看板Programming
標題[問題] 以C++開發系統時用std::wstring嗎?
時間Thu Dec 14 15:21:03 2006
因為網路的資料不太多,所以自己查了查了
std::wstring是由basic_string<w_chart>定義而來的
而basic_string的結構是
template< class charT,
class traits = char_traits<charT>,
class Allocator = allocator<charT>
>
class basic_string;
關於 char_traits<wchar_t> 的話在C++標準可以查到
template <> struct char_traits<wchar_t>{/*...*/}
但後來想想還是不太知道怎麼使用它,而網路上我又不能找到更多的資訊
所以我在大概看了C++標準怎麼定它的時候,就想說自己寫個程式try try看
因為我是ssh連遠端 linux的,而我在Linux系統底下寫個像下面的code
我以 pietty 的UTF-8格式作連線
在以 GCC 3.6版本的作完compile後
然後執行下面兩行程式後
std::wstring A = L"abcdefg測試";
std::wcout<<A;
會印出 abcdefg 而已,而測試沒印出來
為了以防說測試可能沒印出來,是字元顯示的問題,我把這整列都copy起來
複製到自己Windows上的記事本,結果還是只有 abcdefg字串
所以我就不明白了,為什麼我沒辦法印出 abcdefg測試完整的字串
到底wstring為何不會印出 "測試" 這兩字
所以想請教一下在開發系統上有使用過wstring的前輩們
到底是發生了什麼問題??
如果今天程式碼換到其它系統上時,也會不會可能發生類似的問題。
我不知道到底是什麼原因,自己在亂猜,
亂猜一:關於 wstring的話,會因為不同OS有不同的支援嗎??
亂猜二:因為是ssh遠端連線的問題
亂猜三:Compiler支援上的問題
我的開發經驗太淺了,對於wstring不夠了解
在此請教各位前輩了,
或者還是說有什麼不錯的網頁,有比較完整的介紹wstring的,
謝謝 ^_____________________^y
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.68.135.33
→ SBT:我的認知是wchar_t不是utf8(mbcs)他不會幫你轉 59.105.97.250 12/14 23:40
→ SBT:可能要用setlocale,或者真的自己轉utf8輸出 59.105.97.250 12/14 23:42