如何解决像char * const指针一样分配的数组给出乱码的输出
我试图弄清楚为什么我的char* const
并不陌生?
char* const a = new char[10];
给我:
\r\r\r?�����������
编辑:运行测试
std::string text = "Hello world!";
int length = text.size();
char* const a = new char[length];
std::memset(a,'\0',length);
std::strncpy(a,s.c_str(),length); // <-- after this,the gibberish comes back.
解决方法
为什么我的char * const不是新的并且为空?
因为您没有创建一个空数组,而是创建了一个大小为10的数组。因此有10个元素。
此外,您没有初始化任何元素。更具体地说,您没有将任何元素初始化为空终止符。因此,不能保证您的数组包含以null结尾的字符串,因此将其插入字符流会导致不确定的行为。
您可以使用值初始化将所有元素初始化为空终止符:
char* const a = new char[10]();
或者您只能对第一个元素执行此操作:
a[0] = '\0';
或者您可以创建一个空的std::string
:
std::string a;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。