#include<iostream>
#include<fstream>
#include<string>
#include<unordered_map>
#include<memory>
// 断言
// 用例
// 写文件
class AddrMapName
{
public:
std::string getFuncName(const std::string& addr);
bool init();
AddrMapName(const std::string &filename);
private:
std::unordered_map<std::string, std::string> m_map;
std::string m_filename;
std::ifstream m_fin;
};
std::string filename {"./addFuncName.txt.txt"};
void example1()
{
std::ifstream fin;
fin.open(filename, std::ios::in);
if (!fin.is_open()) {
std::cerr << "open file " << filename << "Error" << std::endl;
return;
}
std::string s1, s2;
while (fin >> s1 >> s2) {
std::cout << s1 << " " << s2 << std::endl;
}
}
void example2() {
auto addrMapNamePtr = std::make_shared<AddrMapName>("./addFuncName.txt.txt");
if (!addrMapNamePtr->init()) {
return;
}
std::cout << addrMapNamePtr->getFuncName("1cb8210") << std::endl;;
}
int main()
{
// example1();
example2();
return 0;
}
AddrMapName::AddrMapName(const std::string &filename) :m_filename(std::move(filename)) {}
bool AddrMapName::init() {
m_fin.open(m_filename, std::ios::in);
if (!m_fin.is_open()) {
std::cerr << "open file " << m_filename << "Error" << std::endl;
return false;
}
std::string s1, s2;
while (m_fin >> s1 >> s2) {
m_map.insert({s1, s2});
}
return true;
}
std::string AddrMapName::getFuncName(const std::string& addr ) {
if (m_map.size() == 0) {
std::cerr << "no data, can not output fun name" << std::endl;
return {"OUT PUT FUN NAME ERROR"};
}
return m_map[addr];
}
c++读写文件流
最新推荐文章于 2024-08-05 22:59:16 发布