String literal to basic_string

后端 未结 2 1125
故里飘歌
故里飘歌 2021-01-22 04:04

When it comes to internationalization & Unicode, I\'m an idiot American programmer. Here\'s the deal.

#include 
using namespace std;

typedef          


        
2条回答
  •  暖寄归人
    2021-01-22 04:53

    Narrow string literals are defined to be const char and there aren't unsigned string literals[1], so you'll have to cast:

    ustring s = reinterpret_cast("Hello, UTF-8");
    

    Of course you can put that long thing into an inline function:

    inline const unsigned char *uc_str(const char *s){
      return reinterpret_cast(s);
    }
    
    ustring s = uc_str("Hello, UTF-8");
    

    Or you can just use basic_string and get away with it 99.9% of the time you're dealing with UTF-8.

    [1] Unless char is unsigned, but whether it is or not is implementation-defined, blah, blah.

提交回复
热议问题