C++ visualstudio的字符集编码

C++ visualstudio的字符集编码,c++,windows,visual-studio,encoding,character-encoding,C++,Windows,Visual Studio,Encoding,Character Encoding,当我们使用字符序列编码时,我们有不同类型的编码标准,如单字节编码标准(ASCII和扩展ASCII)、多字节编码标准(Shift-JIS、Unicode 16和…)还有Unicode 32标准,它在今天的编程和软件开发中非常突出,但在VisualStudio环境中,我们只有多字节编码和Unicode 我的问题是:我应该如何在VisualStudio环境中使用可变长度编码标准?它是否支持这些类型的编码标准?如果是,我如何在VisualStudio或其他环境中使用它来实现学习目标?例如,我们如何在微软

当我们使用字符序列编码时,我们有不同类型的编码标准,如单字节编码标准(ASCII和扩展ASCII)、多字节编码标准(Shift-JIS、Unicode 16和…)还有Unicode 32标准,它在今天的编程和软件开发中非常突出,但在VisualStudio环境中,我们只有多字节编码和Unicode


我的问题是:我应该如何在VisualStudio环境中使用可变长度编码标准?它是否支持这些类型的编码标准?如果是,我如何在VisualStudio或其他环境中使用它来实现学习目标?例如,我们如何在微软Visual Studio环境中使用UCS 2或UTF16编码来进行C++开发?P> > VisualStudioC++,支持:


串:
  • string
    :描述模板类
    basic\u string
    与类型
    char
  • u16string
    :描述模板类
    basic\u string
    特殊化的类型,其元素类型为
    char16\u t
  • u32string
    :描述模板类
    basic\u string
    特殊化的类型,其元素类型为
    char32\u t
  • wstring
    :用
    wchar\u t
    类型的元素描述模板类
    basic\u string
    的特殊化的类型


字符文字
  • char
    类型的普通字符文本,例如
    'a'
  • UTF-8字符类型为
    char
    ,例如
    u8'a'
  • 类型为
    wchar\u t
    的宽字符文本,例如
    L'a'
  • 类型为
    char16\u t
    的UTF-16字符文本,例如
    u'a'
  • 类型为
    char32\U t
    的UTF-32字符文本,例如
    U'a'


编码:
  • 没有前缀的字符文字是普通字符文字。可在执行字符集中表示的包含单个字符、转义序列或通用字符名的普通字符文字的值,其值等于其在执行字符集中编码的数值。包含多个字符、转义序列或通用字符名的普通字符文字是多字符文字。执行字符集中无法表示的多字符文字或普通字符文字是有条件支持的,其类型为int,其值由实现定义

  • L
    前缀开头的字符文字是宽字符文字。包含单个字符、转义序列或通用字符名的宽字符文字的值等于其在执行范围字符集中编码的数值,除非该字符文字在执行范围字符集中没有表示形式,在这种情况下,该值由实现定义。包含多个字符、转义序列或通用字符名的宽字符文字的值由实现定义

  • u8
    前缀开头的字符文字是UTF-8字符文字。包含单个字符、转义序列或通用字符名的UTF-8字符文字的值,如果可以由单个UTF-8代码单元(对应于C0控件和基本拉丁Unicode块)表示,则其值等于其ISO 10646代码点值。如果该值不能由单个UTF-8代码单元表示,则该程序的格式不正确。包含多个字符、转义序列或通用字符名的UTF-8字符文字格式错误

  • u
    前缀开头的字符文字是UTF-16字符文字。包含单个字符、转义序列或通用字符名的UTF-16字符文字的值,如果可以由单个UTF-16代码单元(对应于基本多语言平面)表示,则其值等于其ISO 10646代码点值。如果该值不能由单个UTF-16代码单元表示,则该程序的格式不正确。包含多个字符、转义序列或通用字符名的UTF-16字符文字格式错误

  • U
    前缀开头的字符文字是UTF-32字符文字。包含单个字符、转义序列或通用字符名的UTF-32字符文字的值等于其ISO 10646代码点值。包含多个字符、转义序列或通用字符名的UTF-8字符文字格式错误


#包括
使用名称空间std::string_literals;//为std::string文本启用s后缀
int main()
{
//字符文字
自动c0='A';//字符
自动c1=u8'A';//字符
自动c2=L'A';//wchar\u t
自动c3=u'A';//字符16\u t
自动c4=U'A';//字符32
//字符串文字
auto s0=“hello”//const char*
auto s1=u8“hello”;//常量字符*,编码为UTF-8
自动s2=L“你好”;//常量wchar\t*
auto s3=u“hello”;//常量char16\u t*,编码为UTF-16
自动s4=U“hello”;//常量char32\U t*,编码为UTF-32
//原始字符串文字,包含未转换的\和“
auto R0=R“(“Hello\world”);//常量字符*
auto R1=u8R“(“Hello\world”)”;//常量字符*,编码为UTF-8
自动R2=LR“(“Hello\world”);//常量wchar\u t*
auto R3=uR“(“Hello\world”);//常量char16\u t*,编码为UTF-16
自动R4=
#include <string>
using namespace std::string_literals; // enables s-suffix for std::string literals

int main()
{
    // Character literals
    auto c0 =   'A'; // char
    auto c1 = u8'A'; // char
    auto c2 =  L'A'; // wchar_t
    auto c3 =  u'A'; // char16_t
    auto c4 =  U'A'; // char32_t

    // String literals
    auto s0 =   "hello"; // const char*
    auto s1 = u8"hello"; // const char*, encoded as UTF-8
    auto s2 =  L"hello"; // const wchar_t*
    auto s3 =  u"hello"; // const char16_t*, encoded as UTF-16
    auto s4 =  U"hello"; // const char32_t*, encoded as UTF-32

    // Raw string literals containing unescaped \ and "
    auto R0 =   R"("Hello \ world")"; // const char*
    auto R1 = u8R"("Hello \ world")"; // const char*, encoded as UTF-8
    auto R2 =  LR"("Hello \ world")"; // const wchar_t*
    auto R3 =  uR"("Hello \ world")"; // const char16_t*, encoded as UTF-16
    auto R4 =  UR"("Hello \ world")"; // const char32_t*, encoded as UTF-32

    // Combining string literals with standard s-suffix
    auto S0 =   "hello"s; // std::string
    auto S1 = u8"hello"s; // std::string
    auto S2 =  L"hello"s; // std::wstring
    auto S3 =  u"hello"s; // std::u16string
    auto S4 =  U"hello"s; // std::u32string

    // Combining raw string literals with standard s-suffix
    auto S5 =   R"("Hello \ world")"s; // std::string from a raw const char*
    auto S6 = u8R"("Hello \ world")"s; // std::string from a raw const char*, encoded as UTF-8
    auto S7 =  LR"("Hello \ world")"s; // std::wstring from a raw const wchar_t*
    auto S8 =  uR"("Hello \ world")"s; // std::u16string from a raw const char16_t*, encoded as UTF-16
    auto S9 =  UR"("Hello \ world")"s; // std::u32string from a raw const char32_t*, encoded as UTF-32
}