Picky std::string char 数组构造器

Picky std::string char array constructor

好吧,我可能很笨,但我无法弄清楚字符串构造函数要我输入什么类型作为第二个参数。这很好:

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 是完全错误的,因为它给你的是指针的大小,而不是字符串的长度。如果有的话,你想要:

 std::string *str = new std::string(cStringWannabe, length);

而且您几乎不想像那样动态分配字符串,所以:

 std::string str(cStringWannabe, length);

你是否想像这样读取字符串是值得怀疑的:

baseStream.read((char*)cStringWannabe, length);