C++Builder如何将Char* 和String 类型互相转换?

时间:2022-11-03 03:39:36
如何将Char* 和String 类型互相转换?
将Char* 转换为String;
将String转换为Char *;?
能否做到,具体如何操作?谢谢!

14 个解决方案

#1


char* => String: String(p)
String => char*: s.c_str();

#2


1,AnsiStrong的构造函数
__fastcall AnsiString(const char* src);
2,我只知道如何转为const char*
然后再赋值
--这样只是值一样而已

#3


to,annkie(无声的雨)
s.c_str();
这是const char*
不能修改的,
可能满足不了他的要求,
有其他办法么?

#4


应该可以满足楼主的要求,你可以使用const_cast转换一下。

#5


String str;
char *ch;
str="str";
ch = str.c_str();//string->char
str = ch; //char->string

#6


不,我劝你不要直接对String里面的c_str()指针操作


String str;
char *ch;
str="str";
ch = str.c_str();//string->char
str = ch; //char->string

这样的话,你现在对ch进行操作,很有可能会出现莫名其妙的问题.

比如,字符发生错误等等.

所以建议你把String的数据copy出来操作.

其实String就是AnsiString

#7


俺从来就没用过 String这种类型,如果像楼上所说的String类型就是AnsiString类型的话,那就好办了,举例如下:
AnsiString str;
char s[100];

str = AnsiString("sdfgdsfgdf");
//AnsiString 到 char
strcpy(s,str.c_str());
//char 到 AnsiString
strcpy(s,"dsfgddsfgdf");
str = AnsiString(s);

//OK


#8


哈哈,楼主是不是从VC转到BC来哦
前天我搞VC,发现Char* 和String 类型互相转换需要这样:
CString ..;
...Format("/d",..)
麻烦的很~~~

#9


string=string(char*)
char *=string.c_str()

#10


1、char * -> String
char *cp="123456";
String str=StrPas(cp);

2、String -> char *
最稳妥,最标准的做法:
String str="123456";
int len=str.Length();

char *cp=new char[len+1];
StrPCopy(cp, str);

千万不要用
cp=str.c_str()的方法,很不可靠。

#11


“cp=str.c_str()的方法,很不可靠”
这个我真的不了解 而且一直这么用
可以大概讲一下 为什么嘛?

#12


我一直用
StrPas
 和 .c_str()

#13


String youString;
char*  youCharP;

youString = "Hello, this is a demo string.";
youCharP  = youString.c_str();
youString = AnsiString(youCharP);

#14


String to Char *
 
 String Strs;
 char * aa=new char[Strs.Length()+1];
 StrPCopy(aa,Strs);

#1


char* => String: String(p)
String => char*: s.c_str();

#2


1,AnsiStrong的构造函数
__fastcall AnsiString(const char* src);
2,我只知道如何转为const char*
然后再赋值
--这样只是值一样而已

#3


to,annkie(无声的雨)
s.c_str();
这是const char*
不能修改的,
可能满足不了他的要求,
有其他办法么?

#4


应该可以满足楼主的要求,你可以使用const_cast转换一下。

#5


String str;
char *ch;
str="str";
ch = str.c_str();//string->char
str = ch; //char->string

#6


不,我劝你不要直接对String里面的c_str()指针操作


String str;
char *ch;
str="str";
ch = str.c_str();//string->char
str = ch; //char->string

这样的话,你现在对ch进行操作,很有可能会出现莫名其妙的问题.

比如,字符发生错误等等.

所以建议你把String的数据copy出来操作.

其实String就是AnsiString

#7


俺从来就没用过 String这种类型,如果像楼上所说的String类型就是AnsiString类型的话,那就好办了,举例如下:
AnsiString str;
char s[100];

str = AnsiString("sdfgdsfgdf");
//AnsiString 到 char
strcpy(s,str.c_str());
//char 到 AnsiString
strcpy(s,"dsfgddsfgdf");
str = AnsiString(s);

//OK


#8


哈哈,楼主是不是从VC转到BC来哦
前天我搞VC,发现Char* 和String 类型互相转换需要这样:
CString ..;
...Format("/d",..)
麻烦的很~~~

#9


string=string(char*)
char *=string.c_str()

#10


1、char * -> String
char *cp="123456";
String str=StrPas(cp);

2、String -> char *
最稳妥,最标准的做法:
String str="123456";
int len=str.Length();

char *cp=new char[len+1];
StrPCopy(cp, str);

千万不要用
cp=str.c_str()的方法,很不可靠。

#11


“cp=str.c_str()的方法,很不可靠”
这个我真的不了解 而且一直这么用
可以大概讲一下 为什么嘛?

#12


我一直用
StrPas
 和 .c_str()

#13


String youString;
char*  youCharP;

youString = "Hello, this is a demo string.";
youCharP  = youString.c_str();
youString = AnsiString(youCharP);

#14


String to Char *
 
 String Strs;
 char * aa=new char[Strs.Length()+1];
 StrPCopy(aa,Strs);