哈希文件递归并保存到矢量Cryptopp中
Hash file recursive and save into vector Cryptopp
我想要获取哈希文件。在当前路径中有4个文件。它需要散列并保存到向量输出中,以便稍后执行其他任务。
CryptoPP::SHA256 hash;
std::vector<std::string> output;
for(auto& p : std::experimental::filesystem::recursive_directory_iterator(std::experimental::filesystem::current_path()))
{
if (std::experimental::filesystem::is_regular_file(status(p)))
{
CryptoPP::FileSource(p, true, new CryptoPP::HashFilter(hash, new CryptoPP::HexEncoder(new CryptoPP::StringSink(output))), true);
}
}
for (auto& list : output)
{
std::cout << list << std::endl;
}
getchar();
return 0;
我收到这个错误
- 描述没有构造函数"CryptoPP::FileSource::FileSource"的实例与参数列表匹配
- 说明构造函数"CryptoPP::StringSinkTemplate::StringSinkTemplate[with T=std::string]"的实例与参数列表不匹配
- 说明"CryptoPP::StringSinkTemplate::StringSinkTemplate(const CryptoPP::StringSink Template&(":无法将参数1从"std::vector>"转换为"T&">
- 说明":无法从"初始值设定项列表"转换为"CryptoPP::FileSource">
`
将代码简化为基本代码:
std::vector<std::string> output;
FileSource(p, true, new HashFilter(hash, new HexEncoder(new StringSink(output))), true);
Crypto++StringSink
接受对std::string
的引用,而不是对std::vector<std::string>
的引用。另请参阅Crypto++手册中的StringSink
。
FileSource
需要一个文件名,而不是目录名。假设p
是一个目录迭代器而不是文件迭代器,我猜一旦您将名称作为C字符串或std::string
,就会遇到额外的问题。
你应该使用这样的东西:
std::vector<std::string> output;
std::string str;
std::string fname = p...;
FileSource(fname.c_str(), true, new HashFilter(hash, new HexEncoder(new StringSink(str))), true);
output.push_back(str);
我不知道如何从p
中获取文件名,它是一个std::experimental::filesystem::recursive_directory_iterator
。这就是为什么代码只显示std::string fname = p...;
。
你应该再问一个关于filesystem::recursive_directory_iterator
的问题。另请参阅如何在标准C++中递归遍历每个文件/目录?
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在C++中将类(带有Vector成员)保存为二进制文件
- C++.我想将更改后的特定字符行保存在字符串中
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 哈希文件递归并保存到矢量Cryptopp中
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 无法通过头文件保存变量的值
- 我们可以将数据永久保存为数据结构吗?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何访问由共享指针保存的类方法?
- 为什么签名字符可以保存大于 127 的值?
- Cryptopp:获取密码输入的填充字符串