討論區快速選單
知識庫快速選單
網路投保旅行平安險 最紅的App開發語言:Kotlin 傑米的攝影旅遊筆記
[ 回上頁 ] [ 討論區發言規則 ]
C++_動態陣列_讀檔問題
更改我的閱讀文章字型大小
作者 : redonizuka(Saul)
[ 貼文 12 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/8/13 上午 10:26:25
目前初學C++,依照書本上的讀檔,

是宣告一個死的陣列給他,但我想學習如何運用動態陣列,上面是讀整個檔案

若此問題解決,依行讀取也使用動態陣列,在記憶體配置上會來的有效率,所撰寫的程式碼如下:

#include <iostream>
#include <fstream>


using namespace std;

int main()
{
    fstream file;
    char *buffer = new char[300];
    file.open("C:\\Users\\redon_000\\Desktop\\QT\\Uva_3n_add_1\\TestFile.txt",ios::in);
    
    if(!file)
     cout <<"The file didn't open"<<endl;
    else
    {
     file.read(buffer,300);
     cout <<buffer<<endl;
     file.close();
    }
    delete [] buffer;
    return(0);
}

input.txt=
1 10
100 200
201 210
900 1000

我想問的是我這樣子算是有用到動態陣列嗎?

因為到了file.read,我還是給他300的這個定值,

這樣他將讀到的文字存到buffer時,會依照讀到的文字大小去動態配置他的陣列大小嗎?

謝謝
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/8/13 下午 07:43:00
>我想問的是我這樣子算是有用到動態陣列嗎?

算, 因為這行:
  char *buffer = new char[300];

>因為到了file.read,我還是給他300的這個定值,
>這樣他將讀到的文字存到buffer時,會依照讀到的文字大小去動態配置他的陣列大小嗎?

不會. 動態配置不發生在 read(), 而是發生在 new char[300] 那行.
file.read() 給 300, 是因為 buffer 最多只能存放 300 個字元.

請看 read() 的說明:
  http://www.cplusplus.com/reference/istream/istream/read/

read() 不侷限於文字檔, 它不會自動的加入 null 字元. 所以 buffer 不能當作『字串』來用. 這行:
  cout <<buffer<<endl;
會導致不可預期的結果.

你可以用 read() 來讀整個或部份檔, 但你必須在程式裡判斷讀入了多少個字元. 要把 buffer 當作字串還需特別處理.

要讀文字檔, 最好用 std::getline().

 板主 : Jammy
 > 新手入門 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 新手入門 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
新手入門
1 Raymond 900 
2 BK. 820 
3 Jasper 500 
4 太子 500 
5 Benson 410 
6 joe 400 
7 DEMO999 370 
8 青衫 300 
9 小朱 300 
10 Eric Ho 290 
新手入門
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125