C++ C++;读取包含空字符的流的行

C++ C++;读取包含空字符的流的行,c++,ifstream,null-character,C++,Ifstream,Null Character,我有以下问题-有一个文件包含如下信息(我不知道文件大小): \0\0\0\0\0\0123456789\0\0\0\0\0\0Name \0\0\0\0\0\0111111111\0\0\0\0\0\0Name1 \0\0\0\0\0\0222222222\0\0\0\0\0\0Name2 std::ifstream fileStream(file, std::ios::binary); if (fileStream.is_open()) { string line; wh

我有以下问题-有一个文件包含如下信息(我不知道文件大小):

\0\0\0\0\0\0123456789\0\0\0\0\0\0Name
\0\0\0\0\0\0111111111\0\0\0\0\0\0Name1
\0\0\0\0\0\0222222222\0\0\0\0\0\0Name2
std::ifstream fileStream(file, std::ios::binary);

if (fileStream.is_open()) 
{
    string line;
    while (getline(fileStream, line)) 
    {
        cout << line;
    }
}
我的目标是读中间的数字和结尾的名字。我试图使用如下字符串逐行读取:

\0\0\0\0\0\0123456789\0\0\0\0\0\0Name
\0\0\0\0\0\0111111111\0\0\0\0\0\0Name1
\0\0\0\0\0\0222222222\0\0\0\0\0\0Name2
std::ifstream fileStream(file, std::ios::binary);

if (fileStream.is_open()) 
{
    string line;
    while (getline(fileStream, line)) 
    {
        cout << line;
    }
}
我猜这是因为其中有空字符,并且字符串在遇到第一个空字符时终止,所以没有输出。我只是不知道如何阅读整个内容,然后删掉空字符


任何帮助都将不胜感激。

getline
根据定义,文本中的流量非常大。你有一个二进制文件。使用各种类型的二进制操作,如
basic\u istream::get()
。无法使用GCC复制-我已经用您使用的格式写出了一个文件,并用您提供的代码读取和显示它。@Pete哪里说getline不能读取空字符?@Pete那么“二进制文件”是什么意思“尼尔·巴特沃斯——耸耸肩。如果你不满足你调用的标准库函数的前提条件,你就有未定义的行为。未定义的行为通常会导致做您想做的事情,但它仍然是未定义的。这基本上就是样板:不要编写行为未定义的代码。