• 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

    路过点个赞?

  • 相关阅读:
    MySQL用户信息表中主键userID自动增加问题
    PHP输出当前系统时间
    PHP连接MySQL方式比较问题
    DWZ分页处理
    NHibernate ICriteria 查询[转 十年如一]
    HttpContext.Current.Request.Files后台取不到值的解决方法 [转]
    Hibernate Projections(投影、统计、不重复结果)[转]
    细说Form(表单)[ 转 Fish Li]
    HTML <a> 标签的 rel 属性
    dwz rel
  • 原文地址:https://www.cnblogs.com/Renhr/p/13451735.html
Copyright © 2020-2023  润新知