好吧,我可能是傻瓜,但我无法弄清楚字符串构造函数希望我输入的类型作为第二个参数。这很好:
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读取单个字符的函数,将该字符解释为字符串的长度,然后将以下(长度)字符读入字符串对象。
我更喜欢如果函数被赋予一个指向现有字符串的指针,然后它将被修改以包含新数据。
答案 0 :(得分:0)
您无法将其转换为任何内容以取悦构造函数。在这里使用sizeof是完全错误的,因为它给出了指针的大小,而不是字符串的长度。如果有的话,你想要:
std::string *str = new std::string(cStringWannabe, length);
你几乎不想像这样动态分配字符串,所以:
std::string str(cStringWannabe, length);
并且您想要阅读这样的字符串是值得怀疑的:
baseStream.read((char*)cStringWannabe, length);