c++中append函数能追加\0么?

落冰翼 2014-08-05 06:38:12
char pszData[4] = { 'a', '\0', 'c', '\0' };
string strData;
strData.append(pszData, 0, 4);
cout<<strData<<endl;


这样能不能把\0给append进去。
...全文
505 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
落冰翼 2014-08-11
  • 打赏
  • 举报
回复
谢谢诸位大牛,小弟懂了
wanght99 2014-08-07
  • 打赏
  • 举报
回复
引用 9 楼 u011334621 的回复:
[quote=引用 5 楼 my3439955 的回复:] string中可以存储'\0',但是你输出的时候如果就那么简单的输出,0之后的数据是显示不出来的。判断有否存进去,可以输出string的长度
一个串append('\0')后的长度还是原来的长度[/quote] 现象是对的, 但这个是由于C++重载造成的 string& append (const string& str); string& append (const char* s); 你的append('\0')调用的是第二个版本, 对了, 我这里append('\0')是会运行出错的, 用append("\0")才可以. 既然接收的是 char *, 就应该按C风格的字符串来, "\0"就是空串, 当然什么也不append. 如果你这样 string tmp; tmp.push_back('\0'); 再往你的string里append(tmp) 你就会发现'\0'被append进去了.
落冰翼 2014-08-07
  • 打赏
  • 举报
回复
引用 5 楼 my3439955 的回复:
string中可以存储'\0',但是你输出的时候如果就那么简单的输出,0之后的数据是显示不出来的。判断有否存进去,可以输出string的长度
一个串append('\0')后的长度还是原来的长度
落冰翼 2014-08-07
  • 打赏
  • 举报
回复
引用 6 楼 wanght99 的回复:
[quote=引用 2 楼 u011334621 的回复:] 试过了, 不可以·· 如果想在string里面加\0呢?
string是另外单独记录串的长度的, 只是为了跟C字符串兼容所以会在实际存储的时候在串尾加'\0' 从这个逻辑看string里应该是可以存'\0'的. 我在我这里试了一下:
#include <iostream>
#include <string>

using namespace std;
int main(){
    string a("123abc");
    a.push_back('4');
    a.push_back('\0');
    a.push_back('4');
    cout<<a;
    cout<<"\n"<<a.size()<<"\n";
    return 0;
}
输出的结果是: 123abc44 9 字符串长度是9, 说明包含的push_back进去的'\0' 但输出只有8个字符, 因为'\0'不是一个可显示字符, 所以不会显示在屏幕上. 因此, 结论应该是 string里可以push_back '\0'[/quote] push_back 是可以,如果用append追加的话,append会不会处理掉?
wanght99 2014-08-06
  • 打赏
  • 举报
回复
引用 5 楼 my3439955 的回复:
string中可以存储'\0',但是你输出的时候如果就那么简单的输出,0之后的数据是显示不出来的。判断有否存进去,可以输出string的长度
只是 \0 不会输出, 之后的还是可以的, 当然, 如果用c_str()取出指针再用C的方式输出, 从\0开始就都输出不了了.
wanght99 2014-08-06
  • 打赏
  • 举报
回复
引用 2 楼 u011334621 的回复:
试过了, 不可以·· 如果想在string里面加\0呢?
string是另外单独记录串的长度的, 只是为了跟C字符串兼容所以会在实际存储的时候在串尾加'\0' 从这个逻辑看string里应该是可以存'\0'的. 我在我这里试了一下:
#include <iostream>
#include <string>

using namespace std;
int main(){
    string a("123abc");
    a.push_back('4');
    a.push_back('\0');
    a.push_back('4');
    cout<<a;
    cout<<"\n"<<a.size()<<"\n";
    return 0;
}
输出的结果是: 123abc44 9 字符串长度是9, 说明包含的push_back进去的'\0' 但输出只有8个字符, 因为'\0'不是一个可显示字符, 所以不会显示在屏幕上. 因此, 结论应该是 string里可以push_back '\0'
  • 打赏
  • 举报
回复
string中可以存储'\0',但是你输出的时候如果就那么简单的输出,0之后的数据是显示不出来的。判断有否存进去,可以输出string的长度
dbzhang800 2014-08-06
  • 打赏
  • 举报
回复
引用 2 楼 u011334621 的回复:
试过了, 不可以·· 如果想在string里面加\0呢?
不妨说说 你怎么测试的
没事人 2014-08-05
  • 打赏
  • 举报
回复
append是什么函数可以简单介绍下吗
落冰翼 2014-08-05
  • 打赏
  • 举报
回复
试过了, 不可以·· 如果想在string里面加\0呢?
evanbao 2014-08-05
  • 打赏
  • 举报
回复
你自己试一下不就知道了?

64,636

社区成员

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

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