用Bcb2010中,发现一个UnicodeString转换成char*的问题,哪位高手指点一下:
char*c=Memo1->Text.t_str();//文本框中输入几个字符,如jac,bbbb,dddddddd等//假如文本框中输入的字符是:jac//这里Memo...
char *c = Memo1->Text.t_str();//文本框中输入几个字符,如jac,bbbb,dddddddd等
//假如文本框中输入的字符是:jac
//这里Memo1->Text的类型是UnicodeString,
//也可以写成这样:
// UnicodeString str = "jac";
// char *c = str.t_str();
//这样的写法和使用Memo是等同的,不要使用bcb6来测试,因为bcb6里面没有UnicodeString类型,对于AnsiString类型来说取值是正确的。
char ch= *c;//这里可以得到 ch=j
ch = *(c+1); //这里取得的ch的值不是a
ch = *(c+2); //这里取得的ch的值也不是c
如果改成这样的写法:
char ch = *(c+1); //这里取得 ch = a
ch = *(c+2); //这里取得的ch的值也不是c
//也就是说只有第一次取得的字符是正确的,后续的都不正确了,不知道为何,请指点! 展开
//假如文本框中输入的字符是:jac
//这里Memo1->Text的类型是UnicodeString,
//也可以写成这样:
// UnicodeString str = "jac";
// char *c = str.t_str();
//这样的写法和使用Memo是等同的,不要使用bcb6来测试,因为bcb6里面没有UnicodeString类型,对于AnsiString类型来说取值是正确的。
char ch= *c;//这里可以得到 ch=j
ch = *(c+1); //这里取得的ch的值不是a
ch = *(c+2); //这里取得的ch的值也不是c
如果改成这样的写法:
char ch = *(c+1); //这里取得 ch = a
ch = *(c+2); //这里取得的ch的值也不是c
//也就是说只有第一次取得的字符是正确的,后续的都不正确了,不知道为何,请指点! 展开
展开全部
BCB中不是这样用的!
你可以这样操作
AnsiString c=Memo1->Text;
char ch=c.SubString(1,1).c_str();
ch=c.SubString(2,1).c_str();
ch=c.SubString(3,1).c_str();
.....
你可以这样操作
AnsiString c=Memo1->Text;
char ch=c.SubString(1,1).c_str();
ch=c.SubString(2,1).c_str();
ch=c.SubString(3,1).c_str();
.....
追问
如果这样的话就需要类型强转:
AnsiString s = (AnsiString)Memo1->Text;
这样使用s来操作就没有问题
可是我想知道的是为什么UnicodeString类型转成char* 来取值不行
追答
BCB中没有这个功能!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询