1

次のようなテキスト ファイルがあります。
6 1 C
6 2 S
6 3 R
6 4 R

これは最初の 4 行だけです。それらの 90 は、30 の 3 つのセクション (6、7、および 8) に分割されています。文字を配列に読み込むだけにしたいと思います。

これは私がこれまでに持っているものです

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

// Global variables
const int MONTHS = 3;
const int DAYS = 30;

// Function definitions
void readFile(char daily[][DAYS], int size);
void showStats(char daily[], int days);

int main()
{

    char daily[MONTHS][DAYS];

    readFile(daily, MONTHS);

    //  Make sure we place the end message on a new line
    cout << endl;

    //  The following is system dependent.  It will only work on Windows
    system("PAUSE");

    /* 
    // A non-system dependent method is below
    char anyKey;
    cout << "Press any key to continue";
    cin >> anyKey;
    */
    return 0;
}

void readFile(char daily[][DAYS], int size)
{
        // open file.
        ifstream inputFile("RainOrShine.dat");
        if (!inputFile)
        {
                cout << "ERROR: cannot find/read file." << endl;
                exit(EXIT_FAILURE);
        }
        cout << "Reading file...\n";

        // read data.
        for (int months = 0; months < size; months++)
        {
                for (int days = 0; days < DAYS; days++)
                {
                  inputFile >> daily[months][days];
                  cout << daily[months][days] << ", ";
                }
                cout << "\nDone with Row[" << (months);
                cout << "]...\n";
        }

        // close file.
        inputFile.close();
        cout << "Closing File...\n" << endl;
}

void showStats(char daily[], int days)
{
     //code
}

現在、それをループして、次のような 30 個の要素を要素の行 1 に配置します: 6、1、C、6、2、S、6、3、R、6、4、R、6、5、C、6 、6、S、6、7、S、6、8、S、6、9、S、6、1、0、

次に、2番目のセットと同じように次のセットを取得し、3番目のセットも同じように取得します。多次元配列を見る必要がありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

4

3 列目だけを読みたい場合は、次のようにします。

std::ifstream infile("thefile.txt");

int dummy1, dummy2;
char c;

std::vector<char> v;

while (infile >> dummy1 >> dummy2 >> c)
{
    std::cout << "We got: '" << c << "'.\n";
    v.push_back(c);
}
于 2013-04-28T21:04:00.967 に答える