IO库中的宽字符语言

  • wchar_t是C/C++的字符类型,是一种扩展的存储方式。wchar_t类型主要用在国际化程序的实现中,但它不等同于uni编码。uni编码的字符一般以wchar_t类型存。
  • IO库为了支持宽字符语言,定义了一组类型和对象来操作wchar_t类型。例如:wcin,wcout,wcerr;以及如下图头文件:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        wchar_t wStr[]=L"ABCDEFG";
        char Str[] = "ABCDEFG";
        wcout<<wStr<<endl;
        wcout<<Str<<endl;
        cout<<"size:"<<sizeof(wStr)<<endl;
        cout<<"wSize:"<<sizeof(wStr)<<endl;
        return 0;
    }
    

原文地址:https://www.cnblogs.com/TD-Lemon1996/p/11056513.html

时间: 2024-10-11 04:55:34

IO库中的宽字符语言的相关文章

宽字符与Unicode (c语言 汉语字符串长度)

在C语言中,我们使用char来定义字符,占用一个字节,最多只能表示128个字符,也就是ASCII码中的字符.计算机起源于美国,char 可以表示所有的英文字符,在以英语为母语的国家完全没有问题. 但是世界上存在很多不同的语言,例如汉语.汉语.日语等有成千上万个字符,需要用多个字节来表示,称之为宽字符(Wide Character).Unicode 是宽字符编码的一种,已经被现代计算机指定为默认的编码方式,Windows 2000以后的操作系统,包括Windows 2000.XP.Vista.Wi

C++ Primer 第四版读书笔记(七)之标准IO库

C++的输入/输出由标准库提供.标准库定义了一组类型,支持对文件和控制窗口等设备的读写(IO).还定义了其他一些类型,使string对象能够像文件一样操作,从而使我们无需IO就能实现数据与字符之间的转换.一般来说,类的设计者还可以很方便地使用IO标准库设施读写自定义类的对象.类类型通常使用IO标准库为内置类型定义的操作符和规则来进行读写. 一.面向对象的标准库 迄今为止,我们已经使用IO类型和对象读写数据流,它们常用于与用户控制窗口的交互.当然,实际的程序不能仅限于对控制窗口的IO,通常还需要读

JDK框架简析--java.io包中的输入输出类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 Java IO库提供了一个可以称之为链

嵌入式 Linux系统编程(三)——标准IO库

嵌入式 Linux系统编程(三)--标准IO库 与文件IO函数相类似,标准IO库中提供的是fopen.fclose.fread.fwrite等面向流对象的IO函数,这些函数在实现时本身就要调用linux的文件IO这些系统调用. 一.标准IO库函数的缓冲机制 由于IO设备的访问速度与CPU的速度相差好几个数量级,为了协调IO设备与CPU的速度的不匹配,对于块设备,内核使用了页高速缓存,即数据会先被拷贝到操作系统内核的页缓存区中,然后才会从操作系统内核的缓存区拷贝到应用程序的地址空间. 当应用程序尝

boost.log(八)宽字符记录

宽字符记录 Boost.Log支持包含本地字符集字符串的日志记录.基本上有两种方式做这件事.在 UNIX 系统上通常使用一些多字节字符编码 (例如 UTF-8) 用来表示本地字符.在这种情况下,Boost.Log库可以直接以纯 ASCII 的方式记录而不需要其它额外的设置. 在Windows 上常见的做法是使用宽字符串来表示本地字符串.此外大多数系统 API 也是使用的宽字符,这需要特定于 Windows 的接收器也支持宽字符.另一方面,通用的接收器,例如 TextFile,是面向字节的,你写入

5. 宽字符注入详解与实战

宽字节注入源于程序员设置MySQL连接时的错误配置,如下: set character_set_client=gbk 这样的配置会引发编码转换从而导致绕过某些防护实现注入漏洞.具体分析一下原理: 正常情况下GPC开启或者使用addslashes函数过滤GET或POST提交的参数时,我们测试输入的',就会被转义为\'; 若存在宽字节注入,输入%df%27时,经过单引号的转义变成了%df%5c%27,之后再数据库查询语句进行GBK多字节编码,即一个中文占用两个字节,一个英文同样占用两个字节且在汉字编

【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。

//编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列. //要求:不能使用C函数库中的字符串操作函数. #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_stri

Android NDK 下的宽字符编码转换及icu库的使用(转)

原贴http://topic.csdn.net/u/20101022/16/1b2e0cec-b9d2-42ea-8d9c-4f1bb8320a54.html?r=70149216 ,看过并动手实现,记录下来以备再用. 如果是在java层,有String类可以很好的转换各种编码,在ndk下面就没有现成的公开的工具,不过可以用icu4c. ICU4C 是IBM的国际化开发组件ICU的C语言实现版本.在android系统里也有实现.ndk里面并没有公开可用的api,需要自己加载动态库来调用转换函数.

求变量的数据类型,typeid,bool,C和C++的不同,new和delete,C++中的枚举,inline和可变参数模板,auto和函数模板,宽字符

求变量的数据类型,通过函数typeid(变量名).name();获得变量的数据类型. 案例如下: #include <iostream> #include <stdlib.h> void main() { double db = 10.9; double *pdb = &db; auto num = pdb; //通过typeid的方式获得数据类型 std::cout << typeid(db).name() << std::endl; std::c