簡體   English   中英

在file.get(char c)和file.get(char * c,int length)之間的區別

[英]difference betwen file.get(char c) and file.get(char *c, int length)

我正在為我的代碼編寫一個函數。
該功能只需要一個打開的文件即可處理。

這里的功能代碼:

void printFile(std::ifstream &file)
{
    file.seekg(0, file.end);
    int length = file.tellg();
    file.seekg(0, file.beg);

    char *buffer = new char[length];
    file.get(buffer, length);
    file.seekg(0, file.beg);
    char c;
    int i = 0;
    std::cout << "Uncreypted file" << std::endl;
    while (file.get(c))
    {   
        // loop getting single characters

        std::cout << c << " " << buffer[i] << " ";
        i++;
    }
    std::cout << std::endl;

    delete[] buffer;
}

結果很奇怪:

未加密的文件
thhiissiissaatteesstt
═════════

在一行之后,緩沖區輸出與file.get.(c)工作的地方不同的東西,為什么?
這是因為the carriage return ascii letter嗎?

一行后,緩沖區輸出不同的東西

這是因為您沒有閱讀所用功能的文檔。

默認情況下file.get(buffer, length)在第一個換行處停止ref )。

因此, buffer僅包含文件的第一行。
您的其他buffer[i]訪問正在廢話。

閱讀有關如何最好地在C ++中將整個文件讀入字符串的信息

而且,不要編寫“盲目”程序,然后在程序沒有執行所需的操作時感到驚訝;
閱讀文檔

暫無
暫無

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

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