首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++:string转为char*后输出编码值错误 恒为-95

2013-11-29 
C++:string转为char*后输出编码值异常 恒为-95includeiostream#includestringusing namespace stdint

C++:string转为char*后输出编码值异常 恒为-95
include<iostream>
#include<string>
using namespace std;

int main()
{

int Tra(string* s);        \\将string转为char 并返回编码值的函数
string s="¤";
char ch='¤';
cout<<Tra(&s)<<"   "<<int(ch)<<endl;
system("pause");
return 0;
}

int Tra(string* s)
{
char c[3];
strcpy(c,(*s).c_str());
int m=int(*c);
return m;
}

输出结果为 -95 -15
符号¤在string和char中难道不是一样的吗?

而且把¤替换为其他的特殊符号,string s的输出结果仍是-95
//本人C++刚入门,用的vs2005.如有错误,请不吝赐教 string char 编码
[解决办法]
¤ 是一个中文字符, 用一个 char 是表示不了的, 使用 char ch='¤'; 的时候会被截断,
[解决办法]
中文字符是2个字节,而char是一个字节。

引用:
include<iostream>
#include<string>
using namespace std;

int main()
{

int Tra(string* s);        \\将string转为char 并返回编码值的函数
string s="¤";
char ch='¤';
cout<<Tra(&s)<<"   "<<int(ch)<<endl;
system("pause");
return 0;
}

int Tra(string* s)
{
char c[3];
strcpy(c,(*s).c_str());
int m=int(*c);
return m;
}

输出结果为 -95 -15
符号¤在string和char中难道不是一样的吗?

而且把¤替换为其他的特殊符号,string s的输出结果仍是-95
//本人C++刚入门,用的vs2005.如有错误,请不吝赐教

[解决办法]
¤
GBK:0xA1 0xE8
Unicode-16 LE:0xA4 0x00
Unicode-16 BE:0x00 0xA4
UTF-8:0xC2 0xA4

热点排行