string转为char*后输出编码值异常

时间:2013.11.24 发布人:云衍2013

string转为char*后输出编码值异常

已解决问题

谷歌云衍2013用户在2013.11.24提交了关于“智跑string转为char*后输出编码值异常”的提问,欢迎大家涌跃发表自己的观点。目前共有5个回答,最后更新于2024-11-13T09:21:33。

#include<iostream>

#include<string>

usingnamespacestd;


intmain()

{


intTra(string*s);\\将string转为char并返回编码值的函数

strings="●";

charch='●';

cout<<Tra(&s)<<""<<int(ch)<<endl;

system("pause");

return0;

}


intTra(string*s)

{

charc[3];

strcpy(c,(*s).c_str());

intm=int(*c);

returnm;

}


输出结果为-95-15

符号●在string和char中难道不是一样的吗?

而且把●替换为其他的特殊符号,strings的输出结果仍是-95

//本人C++刚入门,如有错误,请不吝指教

希望大家能够帮助她。

详细问题描述及疑问:

#include<iostream>

#include<string>

usingnamespacestd;


intmain()

{


intTra(string*s);\\将string转为char并返回编码值的函数

strings="●";

charch='●';

cout<<Tra(&s)<<""<<int(ch)<<endl;

system("pause");

return0;

}


intTra(string*s)

{

charc[3];

strcpy(c,(*s).c_str());

intm=int(*c);

returnm;

}


输出结果为-95-15

符号●在string和char中难道不是一样的吗?

而且把●替换为其他的特殊符号,strings的输出结果仍是-95

//本人C++刚入门,如有错误,请不吝指教

期待您的答案,希望你能感受到,我最真诚的谢意 !
希望以下的回答,能够帮助你。

第1个回答

用户名:whoami1978  

C/C++来自中,int是反序的(高位在后,低位在前)

intm=int(*c);得到的是反序的内存**(高位),而charch='●';会截断,得到低位问答的**,所以不一致

用intm跳就慢逐他另=c[1];

结果乱训就一致了

第2个回答

用户名:yiloveyou1314s  

#include<iostream>

#include<string>

usingn诉农问断当交财同陆事宗amespacestd;


//将string转为char并返回编码值的函数

intTra(string*s);

intmain()

{

strings="●";

顶值聚演食南星克后charch='●';

cout<<Tra(&s)<<""<<int(ch)<<endl;

cout<<sizeof(s)<<endl;

cout<<s胜百留底izeof(ch)<<e微重是按晶ndl;

system("pause");

return0;

}


intTra(制样洋血我string*s)

{

charc[3];

strcpy(c,(*s).c_str());

intm=int(*c);

returnm;

}

程序进过修改,你看看修改之后的运行效果,这个就是原因所在的关键!

第3个回答

用户名:hustyc  

你把string对象和char对象转换为int型对象,编译器会报警,最好是使用强制类型转换。


第4个回答

用户名:Killin  

亲,请使用atoi()函数

第5个回答

用户名:匿名用户  

C/C++中,int是反序的(高位在后,低位在前)