这是一个简单的程序
#include <iostream>
#include <deque>
#include <string.h>
std :: deque <char> d;
int main ()
{
const char * X = "abcdefg";
d .insert (d .end (), X, X + strlen (X));
d .erase (d .begin (), d .begin () + 4);
d .insert (d .end (), X, X + strlen (X));
std :: cout .write (& d [0], d .size ());
}
我预计输出为“efgabcdefg”,实际输出为十六进制
65 66 67 00 00 00 00 C9 0B 02
这是“efg???????”
出了什么问题?
最佳答案
std::deque
不会将其元素连续存储在内存中。如果需要,请使用 std::vector
。换句话说,&d[0]
不是长度为 d.size()
的缓冲区的开始,您可以将其传递给 write()
.
关于c++ - std::deque<char> 上的简单插入-删除-插入给出了奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16442374/