c++ - ifstream 用于破坏散列字符串

标签 c++ arrays ifstream

您好,我想使用 ifstream 读取散列值的 txt 文件,并将这些值存储在数组中。

128 位散列字符串 另一个 128 哈希字符串 等等

这是我目前所拥有的:

string line;
ifstream myfile ("username.txt");
vector<string> data_arr;
int i = 0;

if (myfile.is_open())
    {
    while (myfile.good())
    {
        getline(myfile, line);          
        data_arr.push_back(line);
        i++;
    }
    myfile.close();
  }
else cout << "Unable to open file";

如何使数组的每个值都为 16 字节长?我猜 getline 对我不起作用,因为散列值可能使换行符标签成为字符的一部分。

无论如何,我希望这是有道理的,(可能没有)因为我是在凌晨 5 点打字的。

最佳答案

如果哈希是没有换行符或空格的存储,你可以尝试这样的事情:

std::vector<char> hash(16);
myfile.read(&hash[0], 16);
data_arr.push_back(std::string(hash.begin(), hash.end());

您还需要检查读取是否成功。

关于c++ - ifstream 用于破坏散列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13658376/

相关文章:

c++ - (C++) noob - 我的代码有什么问题?

c++ - 有没有一种方法可以更有效地将二进制 double 从文件读取到 float 数组中?

c++ - 从文件中读取条目时索引超出范围

包装实际实现的 C++ 适配器类

c++ - 在键入 "exit"后,如何让我的程序打印用户键入的所有数据

新对象构造函数中的Javascript新数组原型(prototype)

javascript - Node 数组范围问题

c++ - 使用 XMM0 寄存器和内存提取(C++ 代码)比仅使用 XMM 寄存器的 ASM 快两倍 - 为什么?

c++ - Qt:为什么在 QWidget 上声明 event() protected

c++ - 玩转字符数组