gpt4 book ai didi

c++ - 读取 MAC 地址时文件读取异常

转载 作者:行者123 更新时间:2023-11-28 01:14:58 27 4
gpt4 key购买 nike

我们有一个通用文件操作类,它将执行所有基本文件操作。所以我使用相同的文件操作类从 Linux 机器读取 MAC 地址,它抛出 basic_ios::clear:iostream 异常。

这是执行文件操作的代码

bool FileIO::ReadTextFile(const std::string & FileName, std::string & Contents)
{
bool Result = false;
std::ifstream FileObj;

try
{
FileObj.exceptions(std::ifstream::badbit | std::ifstream::failbit);
if(DoesFileExist(FileName))
{
FileObj.open(FileName, std::ifstream::in);

FileObj.seekg(0, std::ios::end);
Contents.resize(FileObj.tellg());
FileObj.seekg(0, std::ios::beg);

FileObj.read(&Contents[0], Contents.size());
FileObj.close();

Result = true;
}
}
catch (std::exception & e)
{
std::cout << "Error when reading from file : " << FileName << " "<< std::strerror(errno) << " Exception : " << e.what() << std::endl;
}

return Result;
}

我像下面这样调用这个函数,

std::string MACAddress;
pFOpHandler->ReadEntireTextFile("/sys/class/net/eth0/address", MACAddress);

MAC地址读取成功,但文件操作抛出异常,MACAddress字符串包含MAC地址和一些垃圾值。

最佳答案

你可能想试试这个。您必须为 fstream 和 sstream 添加包含文件。

bool FileIO::ReadTextFile(const std::string &FileName, std::string &Contents) {
bool Result = false;
std::ifstream FileObj;

try {
FileObj.exceptions(std::ifstream::badbit | std::ifstream::failbit);
if (DoesFileExist(FileName)) {
FileObj.open(FileName, std::ifstream::in);
std::stringstream FileContents;
FileContents << FileObj.rdbuf();
Contents = FileContents.str();

Result = true;
}
} catch (std::exception &e) {
std::cout << "Error when reading from file : " << FileName << " "
<< std::strerror(errno) << " Exception : " << e.what()
<< std::endl;
}

关于c++ - 读取 MAC 地址时文件读取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58987889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com