簡體   English   中英

逐行讀取文本文件,然后逐字逐句地讀取數據

[英]Read Text File Line by Line, then word by word c++, push on to an array

我的數據如下:

numbers.text

12     32     21     42

33     566    332    12

66     994    4      33

12     33     33     41

我想將前三個值推入整數向量,而忽略最后一個值。 我需要在每一行中有一個新的前三個數字向量。 只是空格用作分隔符(TAB)。 謝謝!

好吧,最終您希望以文本文件中每行3個整數的std::vector<int>結尾。 這基本上是解析文件的練習,使用C ++文件流對象和流輸入迭代器非常容易。

使用std::ifstream對象打開文件。 然后,您可以使用std::istream_iterator<int>遍歷文件中的每個整數。 這將提取每個整數,因此您可以將其存儲在向量中。 如果要舍棄每行的第四個整數,只需方便使用計數器變量,這樣就可以舍棄每第4個值。

這基本上就是它。 我會留給你實際生成代碼。

  1. 打開文件
  2. 使用std::getline()遍歷文件中的每一行
  3. 將整數解析出行並轉換為向量
    1. 將行放在std::istringstream以解析出整數
    2. 從字符串流中提取三個整數
    3. 將整數推入向量
    4. 您要如何處理向量? 也許把它推進另一個向量?

注意這里發生的事情:您寫了一個問題,我將其翻譯為一系列指令,最后將其翻譯為代碼。 這就是我們編寫簡單程序的方式。 訣竅在於充分了解問題,以將其轉換為上述偽代碼

如果您只是直接讀取文件, std::ifstream將起作用。 如果你正在使用getline (這里真的沒有必要),你可以編寫一個簡單的split函數來分隔值並插入你想要的值。 因為這聽起來像學校作業,我懷疑你會想要使用boost::方法,這會使這相當微不足道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM