C++如何让char储存汉字字符串转char数组??

19:17 提问
c++如何将数字存入字符型数组
char a[10];
如何将h存入到a的一个元素中,直接赋值会被转化为字符??
按赞数排序
a[0] = '0' +
#include "stdafx.h"
#include &iostream&
#include &typeinfo.h&
int main()
char a[10];
int h = 0;
cout && typeid(a[0]).name() &&//char
int main()
char a[10];
int h = 999;
for(int i = 0;i!=3;++i)
#incldue&stringstream&
using std::
int main()
char a[10];
int h = 999;
int h = 999;
for(int i = 0;i!=3;++i)
可以先将Int数据转换为字符串,然后复制字符串到字符数组中。
请参考网址:
用strncpy将字符串拷贝到字符数组中。
其他相关推荐后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
主题帖子荣誉
查看: 3529|回复: 20
& 累计签到:134 天连续签到:1 天
问题背景如下:
定义char a=219;
想输出对应的字符,结果编译后输入为乱码(编译器为VC++6.0)。。。
000.png (194.46 KB, 下载次数: 0)
14:44 上传
源代码:
#include &stdio.h&
#include &stdlib.h&
#include &math.h&
#include &conio.h&
#include &windows.h&
void main ()
{
unsigned char a,
a = 176;
b = 219;
system(&color 0a&);
printf (&%u%u%u%u%u\n&,b,a,a,a,b);
printf (&%c%c%c%c%c\n&,a,b,a,b,a);
printf (&%c%c%c%c%c\n&,a,a,b,a,a);
printf (&%c%c%c%c%c\n&,a,b,a,b,a);
printf (&%c%c%c%c%c\n&,b,a,a,a,b);
printf (&%c\n&,b);
getch();
return 0;
}
复制代码
求各位大神指点- -!
ASCII码字符表 和扩展的ASCII码:
其实大家都知道计算机是老美发明的,当初人家并没有考虑后来需要增加那么多字符,比如中国的汉字,那么早期的美国常用字符,用1个字节的前7个位来表示,已经足够了,这样就产生了ASCII码,后来就不够用了,第8位也被扩展使用了,就增加了一些字符,这也就多了扩展的ASCII码。
lz问题是由于计算机操作系统的默认字符集对应不上导致的。
诚如hlfly所说——中文环境下,文字,即“字(两个字节) ...
& 累计签到:5 天连续签到:0 天
ASCII码字符表 和扩展的ASCII码:
其实大家都知道计算机是老美发明的,当初人家并没有考虑后来需要增加那么多字符,比如中国的汉字,那么早期的美国常用字符,用1个字节的前7个位来表示,已经足够了,这样就产生了ASCII码,后来就不够用了,第8位也被扩展使用了,就增加了一些字符,这也就多了扩展的ASCII码。
lz问题是由于计算机操作系统的默认字符集对应不上导致的。
诚如所说——中文环境下,文字,即“字(两个字节)”容易被2个字节的扩展符所模糊化。
所以将系统的默认语言改回老美的,就可以看得到正确的扩展字符了。
个人认为正确的来说:
要看具体的显示环境,是终端窗口还是TextOut绘画在DC上的。方法1:如lz之前的方式,改变系统默认字符集。方法2:_tsetlocale(LC_ALL, _T(&chs&)); 可能也有关系,可以尝试一下。 ps:至于_tsetlocale是我在写Unicode程序时用到的一个函数,它是设置unicode和宽字符之间的转换代码表的,估计对楼主的程序没什么作用。举例说明一下,unicode的程序读取常见的GB2313编码的文件内容,如果不用tsetlocale设置一下,读取到的就是乱码,因为在翻译成unicode时,默认是用 英语-&Unicode 的方式翻译的。总之,_tsetlocale作为了解看一下,对楼主的项目是没有帮助的。&&
& 累计签到:69 天连续签到:1 天
应该是176和219没有对应的字符吧
& 累计签到:69 天连续签到:1 天
应该是176和219没有对应的字符吧
& 累计签到:7 天连续签到:0 天
本帖最后由 style?b? 于
17:32 编辑
有符号字符变量取值范围 -128~127,%c输出是越界了吧
& 累计签到:981 天连续签到:1 天
#include &stdio.h&
#include &stdlib.h&
int main()
{
& & & & unsigned char a,b;
& & & & a=176;
& & & & b=219;
& & & & system(&color 0a&);
& & & & printf(&%u%u%u%u%u\n&,b,a,a,a,b);
& & & & printf(&%c %c %c %c %c\n&,a,b,a,b,a);
& & & & printf(&%c%c%c%c%c\n&,a,b,a,b,a);
& & & & printf(&%c%c%c%c%c\n&,b,a,a,a,b);
& & & & printf(&%c\n&,b);
& & & & return 0;
}
复制代码我猜你问题应该是为什么printf(&%c\n&,b);显示b的字符形式是一个'?'而在上面却出现不是'?'的情况
经过我稍微修改的程序(我把第二个printf这边加了几个空格)
11.jpg (27.29 KB, 下载次数: 0)
22:49 上传
可以看到加几个空格就正常是'?'了
怎么出现的
首先转换下进制
a=176=0xB0
b=219=0xDB
然后printf(&%c%c%c%c%c\n&,a,b,a,b,a);
把a,b,a,b,a按顺序输入字符串转换工具中
2.jpg (30.94 KB, 下载次数: 0)
22:51 上传
可以发现当连在一起时就是
也就是说printf认为它们是连在一起的了
所以建议+空格让它好区分
热爱鱼C^_^
& 累计签到:48 天连续签到:0 天
前128个字符才是可用的~~这是100道经典例题里面的吧~ 超出了~这个题可能很久以前的了
& 累计签到:247 天连续签到:1 天
超过了128之后,计算机自动把它认为是多位元的字符,字符采用GBK编码方式
& 累计签到:19 天连续签到:0 天
char 的无符号最大值是多少?
& 累计签到:8 天连续签到:0 天
喜欢散步 发表于
char 的无符号最大值是多少?
单字节char 就是0-255嘛,有符号就是-128~127
在ASCII码中,128以上值是用于“扩展ASCII”,比如显示法文字符。欧美语言是1个字节就可以显示常用的文字。
但在欧美语言体系外的语言中(如中、日、韩文),是用2个字节来显示文字,每个单字节部分恰好也是用了128以上数值,如果界面的展示方法是用ASCII码,就显示为“扩展ASCII”,在中文语境下,就会和旁边的另一个字节合起来显示为中文字符。
这也解释了为什么有时我们的汉字会显示为奇怪的字符的问题,比如“激”=BCA4,有时会显示为188、164两个ASCII码对应的字符
& 累计签到:34 天连续签到:1 天
学习了啊。。。。。。。。。。。
& 累计签到:134 天连续签到:1 天
<font color="# 发表于
应该是176和219没有对应的字符吧
在扩展码中~
ps:抱歉,lz上班忙了一个星期,回复迟了。。
& 累计签到:134 天连续签到:1 天
style?b? 发表于
有符号字符变量取值范围 -128~127,%c输出是越界了吧
lz定义的是无符号类型的哦~ Char 类型数据为一个字节,有符号的话,其对应的数值范围为-127~128& && && && && && && && && && && && && && && && && &无符号类型的话,其对应的数值范围为0~255Ps:抱歉,lz上班忙了一个星期,回复迟了。。
& 累计签到:134 天连续签到:1 天
游健健jee 发表于
前128个字符才是可用的~~这是100道经典例题里面的吧~ 超出了~这个题可能很久以前的了
lz定义的是无符号类型的,所以没超出的哦~Char 类型数据为一个字节,有符号的话,其对应的数值范围为-127~128& && && && && && && && && && && && && && && && && &无符号类型的话,其对应的数值范围为0~255Ps:抱歉,lz上班忙了一个星期,回复迟了。。
& 累计签到:134 天连续签到:1 天
<font color="#5123 发表于
超过了128之后,计算机自动把它认为是多位元的字符,字符采用GBK编码方式
这个要看你计算机系统上语言的定义,因为一般默认的是中文,所以128以后的对应的扩展码会显示不出来- -。。。。
ps:抱歉,lz上班忙了一个星期,回复迟了。。
& 累计签到:134 天连续签到:1 天
喜欢散步 发表于
char 的无符号最大值是多少?
无符号的话,0~255哦~
ps:抱歉,lz上班忙了一个星期,回复迟了。。
& 累计签到:134 天连续签到:1 天
hlfly 发表于
单字节char 就是0-255嘛,有符号就是-128~127
在ASCII码中,128以上值是用于“扩展ASCII”,比如显示 ...
大神解释的很精彩,赞一个~
Ps:抱歉,lz上班忙了一个星期,回复迟了。。
& 累计签到:134 天连续签到:1 天
メ㊣逆ご帅☆ 发表于
我猜你问题应该是为什么printf(&%c\n&,b);显示b的字符形式是一个'?'而在上面却出现不是'?'的情 ...
非常感谢鱼友细致而耐心的解释~
不过非常惭愧的是,lz的意思没有表达清楚,其实lz想问的是——
无符号的char字符中,176和219有对应的ascii码(扩展码),为什么编译时乱码- -?
后来经同学帮忙查证后,发现一个非常有说服力的说法,lz亲自“以身试法”,发现行的通哦~,176和219对应的ascii码(扩展码)输出出来了哦- -~
首先普及一下扩展码:
扩展的 ASCII 打印字符表
十进制字符十进制字符<font color="#8&C<font color="#2└<font color="#9ü<font color="#3┴<font color="#0é<font color="#4┬<font color="#1&<font color="#5├<font color="#2&<font color="#6─<font color="#3à<font color="#7┼<font color="#4&<font color="#8╞<font color="#5&<font color="#9╟<font color="#6ê<font color="#0╚<font color="#7&<font color="#1╔<font color="#8è<font color="#2╩<font color="#9&<font color="#3╦<font color="#0&<font color="#4╠<font color="#1ì<font color="#5═<font color="#2&A<font color="#6╬<font color="#3&A<font color="#7╧<font color="#4&E<font color="#8╨<font color="#5&<font color="#9╤<font color="#6&AE<font color="#0╥<font color="#7&<font color="#1╙<font color="#8&<font color="#2&O<font color="#9ò<font color="#3╒<font color="#0&<font color="#4╓<font color="#1ù<font color="#5╫<font color="#2&<font color="#6╪<font color="#3&O<font color="#7┘<font color="#4&U<font color="#8┌<font color="#5&<font color="#9█<font color="#6&<font color="#0▄<font color="#7&<font color="#1▌<font color="#8&#8359;<font color="#2&#9616;<font color="#9&#402;<font color="#3&#9600;<font color="#0á<font color="#4α<font color="#1í<font color="#5&<font color="#2ó<font color="#6Γ<font color="#3ú<font color="#7π<font color="#4&<font color="#8Σ<font color="#5&N<font color="#9σ<font color="#6&<font color="#0&<font color="#7&<font color="#1τ<font color="#8&<font color="#2Φ<font color="#9&#8976;<font color="#3Θ<font color="#0&<font color="#4Ω<font color="#1&frac12;<font color="#5δ<font color="#2&frac14;<font color="#6∞<font color="#3&<font color="#7φ<font color="#4&<font color="#8ε<font color="#5&<font color="#9∩<font color="#6&#9617;<font color="#0≡<font color="#7&#9618;<font color="#1±<font color="#8▓<font color="#2≥<font color="#9│<font color="#3≤<font color="#0┤<font color="#4&#8992;<font color="#1╡<font color="#5&#8993;<font color="#2╢<font color="#6÷<font color="#3╖<font color="#7≈<font color="#4╕<font color="#8≈<font color="#5╣<font color="#9&#8729;<font color="#6║<font color="#0·<font color="#7╗<font color="#1√<font color="#8╝<font color="#2&#8319;<font color="#9╜<font color="#3&sup2;<font color="#0╛<font color="#4■<font color="#1┐<font color="#5
<font color="#6
<font color="#9█
下面就是验证的方法了~
修正操作系统默认的字符集:
控制面板-&区域和语言选项-&高级-&非Unicode程序的语言&&修改成英语(美国)然后重新启动。
附上验证用的编译后的结果——
char 扩展码输出.JPG (114.36 KB, 下载次数: 0)
23:24 上传
& 累计签到:981 天连续签到:1 天
睿之火影 发表于
非常感谢鱼友细致而耐心的解释~
不过非常惭愧的是,lz的意思没有表达清楚,其实lz想问的是— ...
这么给力!我都不知道还有修改系统语言这招,知识困乏。学到了haha~
误解了你的意思真不好意思。。@_@
& 累计签到:134 天连续签到:1 天
メ㊣逆ご帅☆ 发表于
这么给力!我都不知道还有修改系统语言这招,知识困乏。学到了haha~
误解了你的意思真不好意思。。@_@
共勉,共勉,呵呵~
小甲鱼强烈推荐
为了增加趣味性,本届比赛增加了“押宝玩法”、“竞猜玩法”和“擂主玩法”。
本期题目:点开看看?
移动客户端下载(未启用)
微信公众号
Powered by
Copyright &
&&& All Rights Reserved.代码 wchar_t a[3]=L””,编译时出错,出错信息为:数组越界。但wchar_t
是一个宽字节类型,数组a的大小应为6个字节,而两个汉字的的unicode码占4个字节,再加上一个结束符,最多6个字节,所以应该不会越界。难道是编译器出问题了?
二&引入问题所需的知识
&&&主要需两的知识,第一个为字符尤其是汉字的编码,以及语言和的支持情况,第二个是/中MutiByte
Charater Set 和 Wide Character Set有关分配的情况.
三 汉字的编码方式及在vc/c&#43;&#43;中的处理
1.汉字编码方式的介绍
对字符的处理,7位ASCII码字符集中的字符即可满足使用需求,且英符在上的及输出也非常简单,因此,英文字符的输入、、内部处理和输出都只用同一个编码(如ASCII码)。
而汉字是一种象形文字,字数极多(现代汉字中仅字就有六、七千个,总字数高达5万个以上),且字形复杂,每一个汉字都有&音、形、义&三要素,同音字、异体字也很多,这些都给汉字的的计算机处理带来了很大的困难。要在计算机中处理汉字,解决以下几个问题:首先是汉字的输入,即如何把结构复杂的方块汉字输入到计算机中去,这是汉字处理的关键;其次,汉字在计算机内如何表示和存储?如何与西文兼容?最后,如何将汉字的处理结果从计算机内输出?
为此,必须将汉字代码化,即对汉字进行编码。对应于上述汉字处理中的输入、内部处理及输出这三个主要环节,每一个汉字的编码都包括输入码、交换码、内部码和字形码。在计算机的汉字信息处理中,处理汉字时要进行如下的代码转换:输入码→交换码→内部码→字形码。
(1)输入码:&是,利用它和现有的西文键盘结合来输入汉字。输入码也称为外码。主要归为四类:
a)&&&&&&数字编码:数字编码是用等长的数字串为汉字逐一编号,以这个编号作为汉字的输入码。例如,区位码、电报码等都属于数字编码。
b)&&&&&&码:拼音码是以汉字的读音为基础的输入办法。
c)&&&&&&字形码:字形码是以汉字的字形结构为基础的输入编码。例如,五笔字型码(王码)。
d)&&&&&&音形码:音形码是兼顾汉字的读音和字形的输入编码。
(2)交换码:用于汉字外码和内部码的交换。交换码的国家标准代号为GB2312-80。
(3)内部码:内部码是汉字在计算机内的表示形式,是计算机对汉字进行识别、存储、处理和传输所用的编码。内部码也是双字节编码,将国标码两个字节的最高位都置为&1&,即转换成汉字的内部码。
(4)字形码:字形码是表示汉字字形信息(汉字的结构、、笔划等)的编码,用来实现计算机对汉字的输出(显示、打印)。
2.VC中汉字的编码方式
&&&& vc/c&#43;&#43;正是采用了GB2312内部码作为汉字的编码方式,因此vc/c&#43;&#43;中的各种输入输出,如c/wcin,cout/wcout,scanf/wsanf,printf/wprintf...都是基于GB2312的,如果汉字的内码不是这种编码方式,那么利用上述各种方法就不会正确的汉字。
仔细观察ASCII字符表,从第161个字符开始,后面的字符并不经常为所使用,负&#20540;也未使用。GB2312编码方式充分利用这一特性,将161-255(-95~-1)之间的数&#20540;作为汉字的标识码。既然255-161
= 94不能满足汉字容量的要求,就将每两个字符并在一块(即一个汉字占两个字节),显然,94* 94 =8836基本上已经满足了常用汉字个数的要求。计算机处理字符时,当连续处理到两个大与160(或-95~-1)的字节时,就认为这两个字节存放了一个汉字字符。可以用下面的Demo程序来模拟vc/c&#43;&#43;中输出汉字字符的过程。
&&&&unsigned&char&input[50];
&&&&int&flag=0;
&&&&&(int&i
=0 ;i & 50 ;i&#43;&#43;)
&&&&&&&&&if(input[i] & 0xa0 && input[i] != 0)
&&&&&&&&& {
&&&&&&&&&&&&&&if(flag == 1)
&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& cout&&&chinese character&&&
&&&&&&&&&&&&&&&&&&& flag = 0;
&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&else
&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& flag&#43;&#43;;
&&&&&&&&&&&&&& }
&&&&&&&&& }
&&&&&&&&&else&if(input[i] == 0)
&&&&&&&&& {
&&&&&&&&&&&&&&break;
&&&&&&&&& }
&&&&&&&&&else
&&&&&&&&& {
&&&&&&&&&&&&&& cout&&&english character&&&
&&&&&&&&& }
输入:Hello中国 (“中国”对应的GB2312内码为:214
208,185 250)
输出:english character
english character
english character
english character
english character
chinese character
chinese character
vc/c&#43;&#43;中的英文字符仍然采用ASCII编码方式。可以设想,其他国家利用vc/c&#43;&#43;编写程序输入本国字符时,vc/c&#43;&#43;则会采用该国的字符编码方式来处理这些字符。
&&&&问题又产生了,韩国的vc/c&#43;&#43;程序在中国的vc/c&#43;&#43;上运行时,如果没有相应的内码库,则对韩语字符的显示有可能出现。我个人猜测,vc安装程序中应该带有不同国家的内码库,这样一来肯定会占用很大的空间。如果所有的国家使用统一的编码方式,且所有的语言和都支持这种编码方式该多好!而现实中,确实已经有这种编码方式了,且许多新的语言也都支持这种编码方式,如、C#等,它就是下面的Unicode编码
3.新的内码标准---Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨进行文本转换、处理的要求。1990年开始,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。最本的
Unicode 是 2005年3月31日推出的Unicode 4.1.0 。,5.0
Beta已于日推出,以供各会员评价。
Unicode&编码系统可分为编码方式和实现方式两个层次。
编码方式:Unicode 的编码方式与 ISO 10646 的通用字符集(Universal Character Set,S)概念相对应,目前的用于的
Unicode 版本对应于 UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样上一共最多可以表示 216 个字符。基本满足各种语言的使用。实际上目前版本的 Unicode
尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。
实现方式:Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的不一定一致,以及出于节省空间的目的,对
Unicode 编码的实现方式有所不同。Unicode 的实现方式称为Unicode转换&#26684;式(Unicode Translation Format,简称为&)。如,UTF-8 编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他
Unicode 字符混合的情况,将按一定转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。
Java与C#语言都是采用Unicode编码方式,在这两种语言中一个字符,在内存中存放的就是这个字符的两字节Unicode码。如下所示:
char&a='我';&&&&
=&&内存中存放的Unicode码为:25105
4.内码的相互转换
(1)vc中的实现方法
&&&利用系统的:::MultiByteToWideChar和::WideCharToMultiByte
::MultiByteToWideChar:实现当前码到Unicode码的转换;
::WideCharToMultiByte:实现Unicode码到当前码的转换;
(2)Java中的实现方法
&&& String vcString=new String(javaString.getBytes(&UTF-8&),&gb2312&);
java的编码应该是UTF-8
(3)C#中的实现方法
四 vc中的MutiByte Charater Set 和 Wide Character Set
1.MultiByte Charater Set方式
&&&这种方式以按字节为单位存放字符,即如果一个字符码为两字节,则在内存中占两字节,字符码为一字节,就占一字节。例如,字符串“中国abc”的编码为:中(0xd6、0xd0)、国(0xb9、0xfa)、a(0x61)、b(0x62)、c(0x63)、\0(0x00),就存为如下方式:
对应的类型,方法有:
char、scanf、printf、cin、cout …
2.Wide Character Set
这种方式是以两字节为单位存放字符,即如果一个字符码为两字节,则在内存中占四字节,字符码为一字节,就占两字节。例如,字符串“中国abc”就存为如下方式:
对应的类型,方法有:
wchar_t、wscanf、wprintf、wcin、wcout …
造成上面存储方式的根本原因在于,wchar_t类型其实是一个unsigned short
类型。如,存储上面字符串的数组的定义为:wchar_t buffer[8] 等价于unsigned short buffer[8].而所有以字母w开头的方法也都是以unsigned short类型,即两字节为单位来处理字符,因此,存储在wchar_t类型数组中的字符串无法用cout显示,只能用wcout方法来显示。
由于Unicode码也是采用两个字节,因此Wide Character Set方式能够很好的支持Unicode码的存储,但是在vc的环境下要将一个Unicode码存入两字节而不是四字节内存中,必须通过上面的API函数::MultiByteToWideChar。首先,将当前的编码转换为Unicode码,然后,将每个字符的Unicode码放入每一个wchar_t类型的变量中。以下是一个实例代码:
char&input[50];
size=::MultiByteToWideChar(CP_ACP,0,input,strlen(input)&#43;1,NULL,0);
if(size==0)
&&&&&return&-1;
wchar_t&*widebuff=new&wchar_t[size];
::MultiByteToWideChar(CP_ACP,0,input,strlen(input)&#43;1,widebuff,size);
输入:中国abc
Debug断点调试:
数组widebuff[0-size]占12字节,存放了6个字符的Unicode码,码&#20540;为:
中(0x4e2d) 国(0x56fd) a(0x0061) b(0x0062) c(0x0063) d(0x0000)
这时,数组的大小size等于输入的字符个数加上一个结束符,的想象。
五 引入问题的错误
(1)&没有编译器中的编码方式
&&&&虽然vc/c&#43;&#43;中汉字的编码占两个字节,但并不是Unicode码,是GB2312码。
(2)&没有理解MutiByte Charater Set 和 Wide Character Set的存储原则;
&&&&在vc/c&#43;&#43;中,“中国”按char[5]来对待,而wchar_t a[3]实际上是三个unsigned short类型的变量,因此赋&#20540;时会越界。
希望能为需要的朋友解决问题,
如果还不能解决可以联系QQ,email:&
欢迎大家交流cocos2d-x,C&#43;&#43;等各方面的知识,或者创业团队求收留,本人目前在做cocos2dx 网游&&
本文已收录于以下专栏:
相关文章推荐
VC/C++的中文字符处理方式
一 引入问题
代码 wchar_t a[3]=L”中国”,编译时出错,出错信息为:数组越界。但wchar_t 是一个宽字节类型,数组a的大小应为6个字节,而两个...
一 引入问题代码 wchar_t a[3]=L”中国”,编译时出错,出错信息为:数组越界。但wchar_t 是一个宽字节类型,数组a的大小应为6个字节,而两个汉字的的unicode码占4个字节,再加上...
C++对多语言文本字符的支持,通过宽字符来解决。
只要将输入输出设备绑定到一个本地的locale对象上即可。locale currentlocale("chs");表示中国
其处理方法与原来的单字节字...
在调用Web API时,使用直接POST URL的方式实现。但是在拼接URL的时候很可能遇到特殊字符或者中文的情况。
本人对URL的研究很浅,想解决URL中特殊字符的情况,就看了下chrome地址栏中...
在NDK下做网络传输时,遇到一个编码转换的问题,就是对方传过来的文件名是中文GBK编码,需要转成UTF8来处理。 平常在C/C++环境下编程时,系统都会提供字符编码转换的API。如Windows下有M...
Linux下C++判断一个字符串是否为中文,可以先了解些汉字的编码
在NDK下做网络传输时,遇到一个编码转换的问题,就是对方传过来的文件名是中文GBK编码,需要转成UTF8来处理。
平常在C/C++环境下编程时,系统都会提供字符编码转换的API。如Wi...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
1:我想把C++的string[]转换为char *array[],但是试了很久发现无法完成该功能,下面是我调试的代码,无论怎么调试,输出的数组总是不断的循环,不清楚哪里问题,请大家帮忙,谢谢!
#include &iostream&
#include &string.h&
int main() {
char *instrumentID[] = { 0 };
//订阅合约所以数量为3
string array[] = { "1yuanpengfei", "2yuwangying", "3huangtilong", "4hongzhaoyang", "5gengchaogang", "6zhangshuai", "7shenshuai" };
cout && "total string size is:" && sizeof(array) / sizeof(string) &&
int size = sizeof(array) / sizeof(string);
for (i = 0; i & i++) {
const char *charResult = array[i].c_str();
instrumentID[i] = new char[strlen(charResult) + 1];
strcpy(instrumentID[i], charResult);
cout && instrumentID[i] &&
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
数组越界了
char *instrumentID[] = { 0 };
这个数组的大小只有1。
char **instrumentID = new char *[size];
回复在评论里星号被吃了....
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:

我要回帖

更多关于 字符串转char 的文章

 

随机推荐