如下面代碼
#include <iostream>
#include <fstream>using namespace std;int main() {string file_name = "1.txt";std::ifstream file(file_name);if (file.is_open()) {std::string line;while (std::getline(file, line)) {char c = line.back();cout << static_cast<int>(c) << endl; // 13cout << c << endl; // 無法顯示cout << line << endl; // 無法顯示break;}file.close();} else {std::cout << "無法打開文件" << std::endl;}return 0;
}
我發現我讀取的文件每行的 line 是有大小的,說明讀取到了每行的內容,但是通過 cout 打印就是空的
經過我的研究,我發現讀取每行的內容里末尾有個 \r,在 ASCII 碼里是 13,有這個 \r 就會導致讀取的每行的內容無法正常打印,而在 windows 上是能正常識別 \r 的
所以解決辦法就是刪除每行的 \r 就能正常顯示了
Mac\Linux?的這個?getline 只能按照 \n 截取,像是遇到 \r\n 這種格式,就留下一個 \r,導致字符串無法正常顯示