iT邦幫忙

0

求助大神,關於檔案讀取問題

  • 分享至 

  • xImage

想問問大神們有甚麼想法,
需要讀取外部txt檔,但是只需要某幾欄的數據形成陣列,
目前可以順利的讀取多筆數據形成陣列,
只是無法將陣列分成小陣列進行後續運算,
下方是目前的code,
麻煩大家了!!謝謝!!

#include
#include
#include
using namespace std;

const int N=516;
const int M=9;

int main()
{ double data[N][M] = {0};
ifstream infile;
infile.open("benzene1.txt");
for (int i=0;i<516;i++)
{
for (int j=0;j<9;j++)
{
infile>>data[i][j];
}
}
infile.close();
system("pause");
return 0;
}

我們假設你要抽取 1 2 4 6 9 欄,這一段可以這麼改
for (int j=0;j<9;j++)
{
if j!=3 or j!=5 or j!=7 or j!=8 {
infile>>data[i][k];
k++; }
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-02 01:56:50

你可以建立一個結構去處理你需要的特定數據
您也可以選擇性的加入其他欄位

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

const int N = 516;
const int M = 9;

//假設我的檔案格式,每行有10個數值,並且每個數值都與您期望的欄位對應。
struct Data
{
    double field1;
    double field2;
    double field3;
    double field4;
    double field5;
    double field6;
    double field7;
    double field8;
    double field9;
    double field10;
};

int main()
{
    vector<Data> smallData;
    double data[N][M] = {0};
    ifstream infile;
    infile.open("benzene1.txt");

    // 讀取數據並將其放入結構體中
    for (int i = 0; i < N; i++)
    {
        Data d;
        infile >> d.field1 >> d.field2 >> d.field3 >> d.field4 >> d.field5 >> d.field6 >> d.field7 >> d.field8 >> d.field9 >> d.field10;
        smallData.push_back(d);
    }

    infile.close();

    // 遍歷結構體陣列並輸出其中的數據
    for (int i = 0; i < smallData.size(); i++)
    {
        cout << smallData[i].field1 << " " << smallData[i].field4 << " " << smallData[i].field6 << endl;
    }

    system("pause");
    return 0;
}
tsz1288 iT邦新手 5 級 ‧ 2023-01-11 16:20:54 檢舉

您好,
我用您的程式試跑了下,
遇到一點問題,
假設跑cout << smallData[i].field1 時,
會選到某兩欄的數據,
field4、field6同上,
不知道是檔案問題還是有其他的狀況?
謝謝!!
https://ithelp.ithome.com.tw/upload/images/20230111/20155496nknbX6ypXb.jpg

JamesDoge iT邦高手 1 級 ‧ 2023-01-12 03:31:21 檢舉

以上範例我修改了一下。
因為你沒提供外部txt檔,我假設你的檔案格式,每行有10個數值,請再試看看

我要發表回答

立即登入回答