【发布时间】:2017-04-22 18:31:26
【问题描述】:
好吧,我可能很愚蠢,但我不知道字符串构造函数要我输入什么类型作为第二个参数。这很好:
unsigned char *cStringWannabe = new unsigned char[length];
baseStream.read((char*)cStringWannabe, length);
std::string *str = new std::string(cStringWannabe, cStringWannabe+sizeof(cStringWannabe));
但是这超过了大小一并且没有任何意义。
我不知道要将sizeof(cStringWannabe) 转换成什么来取悦构造函数。
编辑:
好的,既然我在很多层面上都错了,是时候澄清一下了。
我想要一个函数,它可以从 fstream 中读取单个字符,将该字符解释为字符串的长度,然后将后面的(长度)字符读入字符串对象。
如果给函数一个指向现有字符串的指针,我希望它会修改它以包含新数据。
【问题讨论】:
-
sizeof(cStringWannabe)是指针的大小。你可能不希望那样。你可能也不想new和std::string,除非你真的遇到内存泄漏。 -
cStringWannabe+sizeof(cStringWannabe)没有意义。cStringWannabe是一个指针,sizeof(cStringWannabe)是它的大小,在这里将它们加在一起是没有意义的。 -
我正在阅读 fstream 并且在 c++ 方面是新手。我正在尝试创建一个函数,该函数在调用时将读取一个 cha(指示长度),然后创建一个包含那么多字符的字符串。我可以得到一个指向字符串的指针,然后修改一个现有的字符串吗?
-
如果你
read的数据包含一个0-终止符,那么你甚至不需要为std::string添加第二个构造函数参数。如果数据不包含 0 终止符,那么您希望长度是多少? -
重新编辑,发布输入文件的十六进制转储。