Re: [問題] 請問wstring格式存的字消失了

看板C_and_CPP (C/C++)作者 (有趣生活)時間16年前 (2009/07/14 13:08), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《worldxxi (風)》之銘言: : 我第一次碰編碼的問題,沒想到這麼麻煩 : 我想要把utf-8的文字寫入資料庫,一開始就有問題。 : 我宣告了一個字串,用來存 ( 'になるか' ) : wstring MessageUserSend=L"'になるか'"; : 可是不管我用wcout顯示在console,還是wofstream寫入檔案都只得到 ( ' ) : step-by-step 執行的時候,我看到MessageUserSend的值為<Bad Ptr> : 我是用visual studio 2005 : 有人知道嗎?謝謝 其實直接用 string 處理就好 wstring 用 wchar_t 儲存字元,你的 ' 字元也會變 2 bytes 你的資料直接傳遞應該是沒問題 現在為了顯示出來,可以使用以下作法 #include <locale.h> #include <windows.h> // 以下是那串日文的原始位元組資料 char utf8str[] = "\x27\xE3\x81\xAB\xE3\x81\xAA\xE3\x82\x8B\xE3\x81\x8B\x27"; wchar_t ucs2str[100]={0}; MultiByteToWideChar(CP_UTF8, 0, utf8str, strlen(utf8str)+1, ucs2str, 100); // 顯示方法1: WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), ucs2str, wcslen(ucs2str), &wr, NULL); // 顯示方法2: setlocale(LC_ALL, ""); printf("%ws", ucs2str); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.231.159.237 ※ 編輯: UNARYvvv 來自: 118.231.159.237 (07/14 13:09)

07/14 13:58, , 1F
error C2065: 'wr' : undeclared identifier我沒設定好嗎
07/14 13:58, 1F

07/14 14:00, , 2F
顯示方法二出來的還是 ' 雖然我看ucs2str是那些字沒錯
07/14 14:00, 2F

07/14 14:05, , 3F
DWORD wr; // 補加這個宣告 剛才忘記複製
07/14 14:05, 3F

07/14 14:15, , 4F
可以了!感恩,可是方法二要怎樣才能正確顯示呢?
07/14 14:15, 4F
文章代碼(AID): #1AN1A_dT (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AN1A_dT (C_and_CPP)