字符数组末尾的奇怪字符
weird chars at the end of char array
我想做的是从缓冲数组中读取字符
std::vector<char> SmartIO::PeekChar(){
int newlen= 0;
while(buffer[ptrSeek] != 0){
ptrSeek++;
newlen++;
}
std::vector<char> temp(newlen);
memcpy(temp.data(),&buffer[ptrSeek-newlen],newlen);
ptrSeek = 0;
return temp;
}
因此,temp.data()
返回例如methodtest««««««««î
,而结果应该只methodtest
!那么是什么导致了这种奇怪的字符呢?
您的缓冲区/字符数组不是以空值结尾的。
您必须知道缓冲区的长度,否则它必须以 null 结尾。
注意:
您不能使用这样的shared_ptr,因为它会调用错误的删除。它需要调用 delete[]。
您可以使用自定义删除程序或boost::shared_array<char>
除此之外,要从字符数组打印,它需要一个空终止符。您也需要为此分配一个字节,并且可以使用strcpy。
我只会在你想复制它几次并避免重新分配的情况下使用 shared_array,否则我只会使用 std::vector<char>
或 std::string
(如果你想要一个可写的字符数组,前者(。
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?