• wchar_t宽字符多格式基本使用(定义输入输出)


    此数据类型主要解决汉字的问题吧。

    理论方面我转载其他优秀博主的博客,我这里就直接贴代码讲解具体使用吧,

    另外,宽字符录入(输入)的问题,我找遍全网也没见得可以用的,

    确实是有wscanf函数,但是没有函数使用样例和报错解决办法,实在让人为难,于是自己去翻函数库一个个找,,,才找到(原创不易啊)

    另外,所用函数是vs提供,所以可能会有其他编译器无法使用的情况,故特别补充非vs编译器可以使用的版本如下:

    (选用Dev为样例)

    #include<iostream>
    #include<cstdio>
    #include<locale.h>
    #include<windows.h> 
    using namespace std;
    int main()
    {
        _wsetlocale(LC_ALL, L"chs");//或者 setlocale(LC_ALL, "chs");
        //若删除上句,仍能输出整个汉字语句,但不能单独 使用/输出 一个汉字 
        
        wchar_t s[5][81];
        /*方式1 
        wcin >> s;
        wcout << s << endl;
        */
        /*方式2 
        _getws(s);
        wprintf(L"%ls
    ", s);
        */
        system("pause>nul");
        return 0; 
    }
    简单易懂

    vs代码如下:

    #include<iostream>
    #include<locale.h>
    #include<stdio.h>
    #include<Windows.h>
    using namespace std;
    locale loc("chs");
    /*
    //语句需要:
    #include<locale.h>
    locale loc("chs");
    _wsetlocale(LC_ALL, L"chs");//或者setlocale(LC_ALL, "chs");
    wcout.imbue(loc);
    */
    int main()
    {
        _wsetlocale(LC_ALL, L"chs");//或者setlocale(LC_ALL, "chs");
        wcout.imbue(loc);
    
        wchar_t s[] = L"我爱你";
        wchar_t S[] = L"你爱我吗";
        /*
        _getws_s(s);//输入类型1
        wcin >> s;//输入类型2
        */
        wprintf(L"%ls
    ", S);
        wprintf(L"%s
    ", S);
        printf("%S
    ", 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 <<'
    '<< S[0] << endl;
        puts((s[2] == S[0])?"yes":"no");
        system("pause>nul");//简单理解使用
    
        return 0;
    }
    c++

    详细宽字符及其衍生函数:https://www.cnblogs.com/lanhaicode/p/10574260.html

    _wsetlocale(LC_ALL, L"chs")//setlocale(LC_ALL, "chs")简单说明及char与wchar_t转换:https://www.cnblogs.com/zplutor/archive/2010/11/27/1889227.html

    路过点个赞?

  • 相关阅读:
    docker搭建lnmp环境
    通过brew安装docker以及docker的使用
    源码编译安装扩展-phpize详解
    php7废弃mcrypt加密,使用openssl替换
    ubuntu安装docker
    mac 操作系统使用iterm(2)自动登录远程服务器
    linux 用户及用户组管理
    let var const 区别
    ubuntu 升级node和npm 版本
    OLTP与OLAP
  • 原文地址:https://www.cnblogs.com/Renhr/p/13451735.html
Copyright © 2020-2023  润新知