函數getline()達到我的文件 「in.txt」,它由2個字符串:EOF突然在ifstream的
abcde
12345
我有我的代碼:
#include <iostream>
#include <fstream>
int main() {
std::ifstream fileIn("in.txt", std::ios::in);
char* chPtr = new(char[10]);
char ch;
printf("fileIn.get()==EOF?: %d \n", (fileIn.get() == EOF)); // =0
std::cout << "fileIn.eof() = " << fileIn.eof() << "\n"; // =0
fileIn.getline(chPtr, 3);
std::cout << "chPtr-" << chPtr << "\n"; //output:"bc" (see 1.)
fileIn.get(ch);
std::cout << "ch-" << ch << "\n"; //(see 2.)
printf("fileIn.get()==EOF?: %d \n", (fileIn.get() == EOF)); // =1 (see 3.)
std::cout << "fileIn.eof() = " << fileIn.eof() << "\n"; // =0 (see 4.)
fileIn.close();
delete[] chPtr;
}
備註代碼:
(1.)第一個符號'a'被get()略微超過;因此,在這裏讀取2個下一個符號,以及第三個符號,我想讀的是,getline()自動分配值'\ 0'(如果我理解正確的話)。
(2.)這裏是問題 - 在這裏輸出符號(代碼[-52])。不幸的是,我沒有足夠的聲望發佈圖像=((這個符號像2個垂直的白線,這一對的右邊線與中間的間隙) (供參考:我每次都得到這個符號,我是想讀成char char數組變量未初始化的元素。) 但爲什麼我得到它的存在?因爲有1弦&整個第二根弦仍然unreaded符號!
()事實證明但是爲什麼我不明白
(4.)我們在這裏仍然是零,因爲(如果我理解了co正確),沒有試圖在eof-line後面讀取數據。光標移動到位於文件的最後一個符號後面,但不在文件結束邊界之外)。
我完全不知道你在問什麼。 –
我問(爲什麼簡潔),爲什麼在語句fileIn.get(ch)之後;我沒有得到ch =='d',但是用char-code -52 // ch。 (int)ch == - 52 – user1234567