关于String类型的c_str()问题!急!

pzchris0927 2012-05-05 04:52:05
string str=oss.str();

cout<<"str:"<<str<< endl;输出正常

cout<<"str.c_str:"<<str.c_str()<< endl;输出为空

OSS为stringstream类型,已赋值,为什么加了C_str()输出就变成空了呢
...全文
314 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
pzchris0927 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
引用 14 楼 的回复:


跟组数值发现。。序列化之后出现了string 出现了很多0值,貌似存到char数组就截断了、、


序列化之后出现了string 出现了很多0值?那为什么直接打印string是对的?
[/Quote]
我也不清楚。。。char数组就截断。string就没问题,我直接由string转INT数组,问题解决,没截断了
纸箱猪 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]


跟组数值发现。。序列化之后出现了string 出现了很多0值,貌似存到char数组就截断了、、
[/Quote]

序列化之后出现了string 出现了很多0值?那为什么直接打印string是对的?
pzchris0927 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
楼主在调用string::c_str()之前把string的长度打印出来看看对不对。
[/Quote]
跟组数值发现。。序列化之后出现了string 出现了很多0值,貌似存到char数组就截断了、、
纸箱猪 2012-05-05
  • 打赏
  • 举报
回复
楼主在调用string::c_str()之前把string的长度打印出来看看对不对。
纸箱猪 2012-05-05
  • 打赏
  • 举报
回复
奇怪,看不出什么问题。跟序列化应该也没什么关系。
pzchris0927 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
楼主要不把这段代码之前的代码也贴出来吧。5楼测试了都说没问题,我光看这段代码也觉得不会有问题。
[/Quote]

ostringstream oss;
cout << "osslen:" << oss.str().size() << "oss:" << oss.str() << endl;
Data data;
data.setData(888888,2,"abcd");
boost::archive::binary_oarchive oar(oss);
oar << data;//序列化
string str=oss.str();//转换为string
cout<<"strlen"<<str.size()<<"str:"<<str<< endl;
cout<<"str.c_str:"<<str.c_str()<< endl;
printf("%s",str.c_str());
char *m=new char[str.size()+1];
strcpy(m,str.c_str());
cout << "m:" <<m<< endl;
纸箱猪 2012-05-05
  • 打赏
  • 举报
回复
楼主要不把这段代码之前的代码也贴出来吧。5楼测试了都说没问题,我光看这段代码也觉得不会有问题。
pzchris0927 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
string s("women");
stringstream strm(s);
string s2 = strm.str();
cout<<s2<<endl;
cout<<s2.c_str()<<endl;
return 0;
测试可以的 2个都输出的
[/Quote]
我是序列化之后stream转换为CHAR,发送的,请问你有什么办法。c_str是不是会截断,我只输出第一个“_",后面就没了
pzchris0927 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
C/C++ code

ostringstream oss;
oss<<"abc"<<endl;
string str=oss.str();

cout<<"str:"<<str<< endl;//输出abc

cout<<"str.c_str:"<<str.c_str()<< endl;//输出abc


测试正常。
[/Quote]
我是序列化之后stream转换为CHAR,发送的,请问你有什么办法。c_str是不是会截断,我只输出第一个“_",后面就没了
pzchris0927 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
stringstream,istringstream,ostingstream

是用来做什么的啊
[/Quote]
我是序列化之后,转换为CHAR,发送的,请问你有高招,c_str是不是会截断,我只输出第一个“_",后面就没了
bsnry 2012-05-05
  • 打赏
  • 举报
回复
stringstream,istringstream,ostingstream

是用来做什么的啊
tjhack7946358 2012-05-05
  • 打赏
  • 举报
回复

ostringstream oss;
oss<<"abc"<<endl;
string str=oss.str();

cout<<"str:"<<str<< endl;//输出abc

cout<<"str.c_str:"<<str.c_str()<< endl;//输出abc

测试正常。
King边 2012-05-05
  • 打赏
  • 举报
回复
string s("women");
stringstream strm(s);
string s2 = strm.str();
cout<<s2<<endl;
cout<<s2.c_str()<<endl;
return 0;
测试可以的 2个都输出的
pzchris0927 2012-05-05
  • 打赏
  • 举报
回复
没人知道吗
pzchris0927 2012-05-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
c_str()返回的是字符串的首地址。应该是string类没有重载<<用于c_str()的输出。
[/Quote]
string str="/0abc";
cout<<s.c_str()<<endl;
但是这样是输出正常的。。。
W170532934 2012-05-05
  • 打赏
  • 举报
回复
c_str()返回的是字符串的首地址。应该是string类没有重载<<用于c_str()的输出。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧