Picky std :: string char数组构造函数

时间:2017-04-22 18:31:26

标签: c++ stdstring

好吧,我可能是傻瓜,但我无法弄清楚字符串构造函数希望我输入的类型作为第二个参数。这很好:

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读取单个字符的函数,将该字符解释为字符串的长度,然后将以下(长度)字符读入字符串对象。

我更喜欢如果函数被赋予一个指向现有字符串的指针,然后它将被修改以包含新数据。

1 个答案:

答案 0 :(得分:0)

您无法将其转换为任何内容以取悦构造函数。在这里使用sizeof是完全错误的,因为它给出了指针的大小,而不是字符串的长度。如果有的话,你想要:

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

你几乎不想像这样动态分配字符串,所以:

 std::string str(cStringWannabe, length);

并且您想要阅读这样的字符串是值得怀疑的:

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