2015-09-24 23 views
0

我想做到這一點,e.gfind_first_of在一個串一個Unicode特殊字符使用其字節

size_t pos=wStr.find_first_of(L"U+8001"); 

但GNU編譯器警告保持字符太長。我不知道什麼字符0x8001代表,但這是它的編碼字節。

+0

[該警告未出現在Wandbox,gcc。](http://melpon.org/wandbox/permlink/DkYUBmg05WigHKAC) – MikeCAT

+1

'std :: string'和'std :: wstring'都不適合處理Unicode,也不是標準的庫函數。如果您需要做的不僅僅是存儲打印屏幕,還需要使用像ICU這樣的庫。 –

+0

這沒有任何意義。顯示完整的警告消息。 –

回答

3

請嘗試size_t pos=wStr.find_first_of(L"\u8001");搜索字符U + 8001。

+0

它會產生相同的警告... –

+0

@MikeCAT,你是不是指L「\ x8001」? – Les

+0

我試過了,但失敗了。它會在搜索後產生一個很長的值 – user1532265

0

簡化您的問題。創建一個簡單的程序,使用MikeCAT的答案,並向自己證明你的wStr變量是正確的,幷包含你所期望的。例如...

std::wstring wStr(L"HELLO\u8001World"); 
auto aaa = wStr.find_first_of(L"\u8001"); 
std::cout << aaa; 

您還應該使用調試器,步驟到位置並查看變量的內容。

相關問題