C++ 从包含以随机字符c++;?

C++ 从包含以随机字符c++;?,c++,C++,我试图从一个包含二进制数的文件中读取并将其更改为整数,然后将其存储在数组中。问题是当我试图查看文件时,这些数字被伪装成随机的无意义字符。这是文件的外观 \æFQÆ3QËDO':^C2-%M “MÚUWæB5q'r2ø7grh-6aï4bï!”$伊姆|BW@0U二进制数据不是字符。不能将它们作为字符读取,也不能使用字符串输入(如std::getline)从文件中读取 首先,应以二进制模式打开文件: 然后使用非匹配的非文本函数读取,例如: std::int32_t缓冲区[512]; 而(infle.

我试图从一个包含二进制数的文件中读取并将其更改为整数,然后将其存储在数组中。问题是当我试图查看文件时,这些数字被伪装成随机的无意义字符。这是文件的外观

\æFQÆ3QËDO':^C2-%M “MÚUWæB5q'r2ø7grh-6aï4bï!”$伊姆|BW@0U二进制数据不是字符。不能将它们作为字符读取,也不能使用字符串输入(如
std::getline
)从文件中读取

首先,应以二进制模式打开文件:

然后使用非匹配的非文本函数读取,例如:

std::int32_t缓冲区[512];
而(infle.read(reinterpret_cast(buffer),sizeof(buffer)){…}
如果读取操作成功,您将拥有一个最多512个32位整数的数组(用于确定读取了多少字节)

还要注意在循环中读取的惯用方法。如果执行此操作(例如,
而(!infle.eof())
),则可能会尝试一次到多次读取,因为只有在读取操作失败后才会设置eof标志


如果您不知道文件中数据的格式,则很难说上述读取是否正确。数据可能是包含8到64位值、浮点值甚至实际文本字符的混合结构。

二进制数据不是字符。您不能将其作为字符读取,也不能使用字符串输入(如
std::getline
)从文件中读取

首先,应以二进制模式打开文件:

然后使用非匹配的非文本函数读取,例如:

std::int32_t缓冲区[512];
而(infle.read(reinterpret_cast(buffer),sizeof(buffer)){…}
如果读取操作成功,您将拥有一个最多512个32位整数的数组(用于确定读取了多少字节)

还要注意在循环中读取的惯用方法。如果执行此操作(例如,
而(!infle.eof())
),则可能会尝试一次到多次读取,因为只有在读取操作失败后才会设置eof标志



如果您不知道文件中数据的格式,则很难说上述读数是否正确。数据可能是包含8到64位值、浮点值甚至实际文本字符的混合结构。

您需要以二进制文件的形式打开该文件。您正在以文本文件的形式打开它。请看这里:


查看ios::binary部分。

您需要以二进制文件的形式打开该文件。您正在以文本文件的形式打开它。请查看此处:


看看ios::binary部分。

您有关于该文件的更多信息吗?我猜该文件中填充了32位或64位数字(每个占4或8字节).Binary文件存储信息非常紧凑,但您需要知道它的格式,以便能够读取它。以字符形式查看原始信息毫无帮助,因为它实际上不是字符,只是数字。您创建了文件吗?我没有创建文件,提供的唯一信息是该文件“包含一组二进制数字”就是这样。您有关于该文件的更多信息吗?我猜该文件中填充了32位或64位数字(每个数字占用4或8个字节).二进制文件存储信息非常紧凑,但您需要知道它的格式,以便能够读取它。以字符形式查看原始信息毫无帮助,因为它实际上不是字符,只是数字。您创建了文件吗?我没有创建文件,提供的唯一信息是文件“包含一组二进制数“就是这样。此外,您可能需要提及他正在做的其他事情,例如调用
getline()
atoi()
。此外,您可能需要提及他正在做的其他事情,例如调用
getline()
atoi()
。谢谢你的回答。我现在就来试试!我很感激这一课!谢谢你的回答。我现在就来试试!我很感激这一课!
void readf2()
{
    std::ifstream inFile("f2");
    std::string line;
    int num;
    while(!inFile.eof()){
     std::getline(inFile,line);
     num = atoi(line.c_str());
     cout<<num;
     cout<<"\n";
    }
}
std::ifstream inFile("f2", std::ios_base::binary);
std::int32_t buffer[512];
while (inFile.read(reinterpret_cast<char*>(buffer), sizeof(buffer)) { ... }