C++通用ascii字符是什么名是什么?有什么作用?

C++中,用什么变量来存储特殊字符如:■_百度知道
C++中,用什么变量来存储特殊字符如:■
提问者采纳
cout&lt:#include&s&iostream&■&;&int main(){
char* s=&&lt就当做一个普通的字符串啊
其他类似问题
特殊字符的相关知识
其他3条回答
char 型变量
你用char类型的字符
你ASCII码表示
不知道你要哪个 这两个看着差不多
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1543人阅读
std::locale通过前面两节的知识,我们知道了在C/C++中,字符(串)和宽字符(串)之间的转换不是简单的,固定的数学关系,宽窄转换依赖于本地化策略集(locale)。换句话说,一个程序在运行之前并不知道系统的本地化策略集是什么,程序只有在运行之后才通过locale获得当时的本地化策略集。C有自己的locale函数,我们这里直接介绍C++的locale类。先讨论locale的构造函数:locale() throw();这个构造函数是获得当前程序的locale,用法如下:std::locale app_loc = std::locale();或者(这是构造对象的两种表示方式,后同)std::locale app_另外一个构造函数是:explicit locale(const char* name);这个构造函数以name的名字创建新的locale。重要的locale对象有:std::locale sys_loc("");&&&&&&//获得当前系统环境的localestd::locale C_loc("C");&&&&&&或者&&&&&&std::locale C_loc = std::locale::classic();&&&&&&//获得C定义localestd::locale old_loc = std::locale::global(new_loc);&&&&&&//将new_loc设置为当前全局locale,并将原来的locale返回给old_loc除了这些,其它的name具体名字依赖于C++编译器和操作系统,比如Linux下gcc中文系统的locale名字为"zh_CN.UTF-8",中文Windows可以用"chs"(更加完整的名字可以用name()函数查看)。mbstowcs()和wcstombs()这两个C运行时库函数依赖于全局locale进行转换,所以,使用前必须先设置全局locale。std::locale已经包含在&iostream&中了,再加上我们需要用到的C++字符串,所以包含&string&。我们先看窄到宽的转换函数:
const&std::wstring&s2ws(const&std::string&&s){&&&&std::locale&old_loc&=&&&&&&&&std::locale::global(std::locale(""));&&&&const&char*&src_str&=&s.c_str();&&&&const&size_t&buffer_size&=&s.size()&+&1;&&&&wchar_t*&dst_wstr&=&new&wchar_t[buffer_size];&&&&wmemset(dst_wstr,&0,&buffer_size);&&&&mbstowcs(dst_wstr,&src_str,&buffer_size);&&&&std::wstring&result&=&dst_&&&&delete&[]dst_&&&&std::locale::global(old_loc);&&&&return&}
我们将全局locale设置为系统locale,并保存原来的全局locale在old_loc中。在制定转换空间缓存大小的时候,考虑如下:char是用1个或多个对象,也就是1个或者多个字节来表示各种符号:比如,GB2312用1个字节表示数字和字母,2个字节表示汉字;UTF-8用一个字节表示数字和字母,3个字节表示汉字,4个字节表示一些很少用到的符号,比如音乐中G大调符号等。wchar_t是用1个对象(2字节或者4字节)来表示各种符号。因此,表示同样的字符串,宽字符串的大小(也就是wchar_t对象的数量)总是小于或者等于窄字符串大小(char对象数量)的。+1是为了在最后预留一个值为0的对象,以便让C风格的char或者wchar_t字符串自动截断&&这当然是宽串大小等于窄串大小的时候才会用上的,大部分时候,字符串早在前面某个转换完毕的位置就被0值对象所截断了。最后我们将全局locale设置回原来的old_loc。窄串到宽串的转换函数:
const&std::string&ws2s(const&std::wstring&&ws){&&&&std::locale&old_loc&=&&&&&&&&std::locale::global(std::locale(""));&&&&const&wchar_t*&src_wstr&=&ws.c_str();&&&&size_t&buffer_size&=&ws.size()&*&4&+&1;&&&&char*&dst_str&=&new&char[buffer_size];&&&&memset(dst_str,&0,&buffer_size);&&&&wcstombs(dst_str&,src_wstr,&buffer_size);&&&&std::string&result&=&dst_&&&&delete&[]dst_&&&&std::locale::global(old_loc);&&&&return&}
这里考虑转换空间缓存大小的策略正好相反,在最极端的情况下,所有的wchar_t都需要4个char来表示,所以最大的可能就是4倍加1。这两个函数在VC和gcc中都能正常运行(MinGW因为前面说到的原因不支持宽字符的正常使用),在VC中会给出不安全的警告,这是告诉给那些弄不清宽窄转换实质的人的警告,对于了解到目前这些知识的你我来说,这就是啰嗦了。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:176857次
积分:2501
积分:2501
排名:第6042名
原创:49篇
转载:103篇
评论:64条
(1)(1)(2)(10)(2)(2)(1)(9)(2)(1)(1)(2)(17)(1)(5)(1)(4)(5)(1)(15)(3)(3)(1)(9)(1)(1)(2)(3)(3)(17)(22)(4)用C++语言实现对字符串的添加修改等操作_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
25页免费24页免费9页免费12页免费12页免费24页1下载券2页免费1页免费7页1下载券14页1下载券
用C++语言实现对字符串的添加修改等操作|C​+​+​语​言​中​类​的​知​识​,​在​类​函​数​中​定​义​构​造​和​析​构​函​数​,​实​现​对​字​符​串​的​初​始​化​,​输​入​输​出​等​操​作​。
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数 ,C++编程
编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数 ,C++编程 5
#include &iostream&


int main()
{

char str1[40];

char str2[20];//保证被连接字符串长度大于待连接字符串的长度.

int counter1=0,counter2=0;//计数器

cout&&&请输入第一个字符串: &;

cin&&str1;

cout&&&\n请输入第二个字符串: &;

cin&&str2;


while(str1[counter1]!=&\0&)
//这个循环用于找到第一个字符串的最后一字符位置

++counter1; //counter1用于记录这个位置

while(str2[counter2]!=&\0&)

{

str1[counter1-1]=str2[counter2]; //从第一个字符串的末尾开始复制

++counter1;

++counter2; 

}

str1[counter1]=&\0&; //将字符串的结束位改成 连接后的字符串的末尾 

cout&&&\n连接后的字符串: &&&str1;
}
相关知识等待您来回答
编程领域专家C++ 如何在某个函数或作用域中设置当前使用的字符集?_百度知道
C++ 如何在某个函数或作用域中设置当前使用的字符集?
本人用的vs2012编译器最近在字符集使用问题上遇到了一些麻烦项目设置的是使用 Unicode 字符集但是我想在某个函数中 不适用 Unicode 字符集请问如何操作?有现成的函数设置么ps:设置之后还需要改回系统默认设置 使用 Unicode 字符集 :)
提问者采纳
与项目设置无关(像_stprintf这样的则是会随项目设置变动,使用时Windows会自动帮你进行字符集转换,大部分涉及字符串的API都提供了两个版本(后缀分别为A和W)例如CreateWindowA和CreateWindowW在不使用WindowsAPI的情况下,分别对应两种字符集。不过如果是MFC程序的话,这是如果想在某一块代码中更换字符集,就不要用带t的函数)而WindowsAPI中,当在某一片区域需要用特殊字符集时,处理不同字符集的标准库函数原本就是分开的,这些函数该用哪个就用哪个,类的成员函数使用的字符集就不分两个版本而完全依赖于项目设置了,同样可以分开使用,例如sprintf和swprintf分别处理多字符字符集和Unicode字符集
提问者评价
是我想问题的思路错了 多谢指点
其他类似问题
字符集的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 字符是什么意思 的文章

 

随机推荐