[英]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.