c++中append函数会追加\0么

c++中append函数能追加\0么?
char pszData[4] = { 'a', '\0', 'c', '\0' };
string strData;
strData.append(pszData, 0, 4);
cout<<strData<<endl;


这样能不能把\0给append进去。
------解决方案--------------------
引用:
试过了,  不可以··      如果想在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: 引用:

string中可以存储'\0',但是你输出的时候如果就那么简单的输出,0之后的数据是显示不出来的。判断有否存进去,可以输出string的长度


一个串append('\0')后的长度还是原来的长度

现象是对的, 但这个是由于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进去了.