簡體   English   中英

如何從 C++ 中的二進制文件中讀取字符串?

[英]How to read string from a binary file in C++?

我有一個 function 兩個函數,寫入和讀取 C++ 中的二進制文件。

void save_ascII(string ascII_text, string filename)
{
    ofstream fout;

    fout.open(filename,ofstream::binary);
    
    size_t input_size = ascII_text.size();
    if (fout.is_open())
    {
        fout.write(reinterpret_cast<char*>(&input_size), sizeof(input_size));
        fout.write(reinterpret_cast<char*>(&input_size), input_size);
        fout.close();
    }
}

void read_ascII(string filename)
{
    string read_input;

    ifstream fin(filename,fstream::binary);
    
    size_t read_size;

    if (fin.is_open())
    {
        fin.read(reinterpret_cast<char*>(&read_size), sizeof(read_size));
        read_input.resize(read_size);
        fin.read(&read_input[0], read_size);
        fin.close();
    }
}

問題是當它從二進制讀取時,它只是 memory 上的虛擬數據。

When it reads from the binary file, it shows: 
►╠╠╠╠╠╠╠╠▄²A

任何建議都非常感謝。

在您的代碼中,

size_t input_size = ascII_text.size();
if (fout.is_open())
{
    fout.write(reinterpret_cast<char*>(&input_size), sizeof(input_size));
    fout.write(reinterpret_cast<char*>(&input_size), input_size); //<--bug
    fout.close();
}

而不是標有bug<--的行,你需要

fout.write(ascII_text.data(), input_size);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM