c/c++ wchar_t

//char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,//char型无法表示。

//wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定//wchar_t为32位,总之,wchar_t所能表示的字符数远超char型。

//标准C中的wprintf函数以及标准C++的iostream类库中的类和对象能提供wchar_t宽字符类型的

//相关操作。

#include "pch.h"
#include<iostream>
#include<locale.h>
#include<stdio.h>
#include<Windows.h>
#include <iostream>
using namespace std;
locale loc("chs");
int main()
{
    _wsetlocale(LC_ALL, L"chs");//或者setlocale(LC_ALL, "chs");
    wcout.imbue(loc);

    wchar_t s[] = L"字符串1";
    wchar_t S[] = L"字符串2";
    /*
    _getws_s(s);//输入类型1
    wcin >> s;//输入类型2
    */
    wprintf(L"%ls\n", S);
    wprintf(L"%s\n", S);
    printf("%S\n", S);
    /* %s 和 %S 输出区别是:
    %s窄字符输出,
    %ls宽字符输出,
    %S输出与输出函数相反宽度的字符格式
    (也就是printf因为默认支持的宽度是单字符,而%S偏要使用相反的,那么就
    使用宽字符格式输出,而wprintf默认支持的宽度是宽字节,%S偏要使用相反的,
    意思就是使用单字符格式输出)
    */
    system("pause>nul");//输出类型1
    wcout << s << endl;
    system("pause>nul");//输出类型2
    putwchar(s[2]);//或者printf("%lc",s[2]);
    wcout << '\n' << S[0] << endl;
    puts((s[2] == S[0]) ? "yes" : "no");
    cout << endl;
    cout << endl;
    cout << endl;
    system("pause");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值