[問題] C++ 將檔案讀入 std::string
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我想要一次將整個檔案讀進 std::string
而不是用 while 一行一行讀取再 append string
我直接使用 std::getline() 第三個參數 delim 丟入 '\0' 處理
測試過幾個檔案「看起來」沒有問題
我想問的是會不會有特殊情形導致這個方式讀出來的內容是錯誤的?
直接假設「檔案的第一個 '\0' 字元就是整個檔案的結尾」是正確的嗎?
謝謝
餵入的資料(Input):
內容為 ASCII 字元,不包含其它特殊字元的文字檔。
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char** argv)
{
string str;
ifstream fin(argv[1], ios::in);
if (fin.fail())
return 1;
getline(fin, str, '\0');
fin.close();
cout << str;
return 0;
}
補充說明(Supplement):
--
□ (本文已被吃掉) 吃光光,口卡口卡
□ (本文已被吃掉) ⊙ ⊙ ◤
□ (本文已被吃掉) ▼▼▼▼
□ (本文已被吃掉) ▲▲▲▲
□ (本文已被吃掉) ︶█ ) ))..
□ (本文已被吃掉) ( ︶
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.202.159
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1431979023.A.DD3.html
※ 編輯: out99 (114.43.202.159), 05/19/2015 03:59:32
※ 編輯: out99 (114.43.202.159), 05/19/2015 04:01:10
→
05/19 08:32, , 1F
05/19 08:32, 1F
→
05/19 09:47, , 2F
05/19 09:47, 2F
推
05/19 10:05, , 3F
05/19 10:05, 3F
→
05/19 13:25, , 4F
05/19 13:25, 4F
→
05/19 13:25, , 5F
05/19 13:25, 5F
→
05/19 13:26, , 6F
05/19 13:26, 6F
→
05/19 13:26, , 7F
05/19 13:26, 7F
→
05/19 13:27, , 8F
05/19 13:27, 8F
目前需求沒有要用binary讀檔,感謝建議!
※ 編輯: out99 (114.37.157.70), 05/19/2015 14:36:22
→
05/23 00:11, , 9F
05/23 00:11, 9F
→
05/23 00:12, , 10F
05/23 00:12, 10F
→
05/23 00:12, , 11F
05/23 00:12, 11F
→
05/23 01:39, , 12F
05/23 01:39, 12F
→
05/23 01:41, , 13F
05/23 01:41, 13F
→
05/23 01:42, , 14F
05/23 01:42, 14F
→
05/23 02:49, , 15F
05/23 02:49, 15F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):