c++ string类型数据如何写入字符数组

软件和网站开发以及相关技术探讨
回复
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

c++ string类型数据如何写入字符数组

#1

帖子 weihua2008 » 2009-03-04 16:55

问问,c++的stirng类型数据如何写入字符数组
stirng str="weihua";
int len=str.length();
char buf[30];
memcpy(buf,&str,len);
cout<<buf<<endl;
输出的结果撒是乱码
哪出错了
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: c++ string类型数据如何写入字符数组

#2

帖子 lerosua » 2009-03-04 16:58

memcpy(buf,&str.c_str(),len);
这么试试
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

Re: c++ string类型数据如何写入字符数组

#3

帖子 weihua2008 » 2009-03-05 16:57

lerosua,
谢谢
头像
我才是小米
帖子: 21
注册时间: 2009-03-06 19:37

Re: c++ string类型数据如何写入字符数组

#4

帖子 我才是小米 » 2009-03-08 19:40

用strcpt( ,)试试,可以的
有时候人要看的远一点,可是不能好高骛远......
头像
pentie
帖子: 228
注册时间: 2007-08-27 22:03
来自: http://apt-blog.co.cc/

Re: c++ string类型数据如何写入字符数组

#5

帖子 pentie » 2009-03-08 22:58

晕,用到对象还用memcpy原始的函数……汗

string对象不是有个c_str么,其返回的才是c格式字符串的内存地址。
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: c++ string类型数据如何写入字符数组

#6

帖子 lerosua » 2009-03-08 23:12

楼主应该是学了c之后才学c++的吧,都这样,呵呵
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

Re: c++ string类型数据如何写入字符数组

#7

帖子 weihua2008 » 2009-03-11 9:33

pentie,
你说的我有点迷糊,你是啥意思哈
????
说具体点
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: c++ string类型数据如何写入字符数组

#8

帖子 eexpress » 2009-03-11 9:40

c_str标准些。
BCB里面都这样用。
● 鸣学
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08

Re: c++ string类型数据如何写入字符数组

#9

帖子 weihua2008 » 2009-03-11 9:58

对哈,我不知道除了,
memcpy(buff,str.c_str(),nLen);
或者
strcpy(buff,str.c_str(),nLen);
外还有没有更好的办法?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: c++ string类型数据如何写入字符数组

#10

帖子 eexpress » 2009-03-11 10:04

类而已。最好用它自己提供的方法。
非标准的方法,可以自己看类的说明,理解实际的存储结构,再取得需要的数据,可这是折腾。
● 鸣学
头像
xiaocheng_zh
帖子: 46
注册时间: 2009-05-30 15:52
来自: DL LIAONING CHN

Re: c++ string类型数据如何写入字符数组

#11

帖子 xiaocheng_zh » 2009-06-02 23:43

strncpy(buff,str.c_str(),len)不是最好的吗?
上次由 xiaocheng_zh 在 2009-06-30 22:31,总共编辑 1 次。
头像
xiaocheng_zh
帖子: 46
注册时间: 2009-05-30 15:52
来自: DL LIAONING CHN

Re: c++ string类型数据如何写入字符数组

#12

帖子 xiaocheng_zh » 2009-06-02 23:53

把buf改成动态的:
char *buf = new char[len+1];
for (int i = 0;i < len;buf = str,i++);
buf[len] = '\0';//以上相当于把一个string变成C风格的字符串
//do something
//......
delete [] buf;// ^_^别忘了释放buf哦
//......
和大家共同学习ing。。。。。。 :em02
回复