我正在用 C++ 编写一个霍夫曼代码,现在我正在从文件中获取数据并且遇到了障碍。第一行我有一个字符串,我想把它当作一个字符串,我一点也不难做到。但是然后我必须取下 x 行数并将它们作为无符号字符,以便我可以使用它们。
如果我想将此表单提取为文件,我会输入什么?
ILaILbILrILcLd (想作为一个字符串)
3(3是它下面的#s的数量)
89(想把这 3 个作为无符号字符取出
207
88
我正在用 C++ 编写一个霍夫曼代码,现在我正在从文件中获取数据并且遇到了障碍。第一行我有一个字符串,我想把它当作一个字符串,我一点也不难做到。但是然后我必须取下 x 行数并将它们作为无符号字符,以便我可以使用它们。
如果我想将此表单提取为文件,我会输入什么?
ILaILbILrILcLd (想作为一个字符串)
3(3是它下面的#s的数量)
89(想把这 3 个作为无符号字符取出
207
88
正如耐克告诉我们的那样,去做吧:
// read the line:
std::string line1;
std::getline(infile, line1);
// read the int:
int num;
infile >> num;
// probably want to sanity check `num` here
// define a place to store the chars
std::vector<char> chars;
// read the chars.
for (i=0; i<num; i++) {
unsigned int temp;
infile >> temp;
chars.push_back(static_cast<unsigned char>(temp));
}
在这种情况下它可能不会完成太多,但是在定义之后chars
,您可以添加:chars.reserve(num);
以避免重新分配vector
s 内存。