2

何千ものfloat値で構成されるデータファイルがあり、それらを2Dベクトル配列に読み込んで、ファイルからfloatが保存されたら、そのベクトルを別のルーチンに渡します。このコードを実行すると、出力されます。

[0] [0] = 0、[0] [1]=0など。

データファイルには、次のような値が含まれています。

0.000579、27.560021など。

int rows = 1000;
int cols = 2;
vector<vector<float>> dataVec(rows,vector<float>(cols));
ifstream in;
in.open("Data.txt");

for(int i = 0; i < rows; i++){
    for(int j = 0; j < 2; j++){
        in >> dataVec[i][j];    
        cout << "[ " << i << "][ " << j << "] = " << dataVec[i][j] << endl;
    }
}
in.close();
4

3 に答える 3

6

ファイルを開くことができなかったようです。あなたは成功をテストしなかったので、それは関係なく耕します。すべての値はゼロに初期化され、すべての読み取りが失敗するため、その状態が維持されます。これは推測です、私は認めます、しかし私はそれにお金をかけます。=)

于 2012-10-15T00:57:53.420 に答える
1

このソリューションを試してください。仕様に従って機能します。

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

int main(void)
{

    ifstream infile;
    char cNum[10] ;
    int rows = 1;
    int cols = 2;
    vector<vector<float > > dataVec(rows,vector<float>(cols));

    infile.open ("test2.txt", ifstream::in);
    if (infile.is_open())
    {
            while (infile.good())
            {

                for(int i = 0; i < rows; i++)
                {
                    for(int j = 0; j < 2; j++)
                    {

                        infile.getline(cNum, 256, ',');

                        dataVec[i][j]= atof(cNum) ;

                        cout <<dataVec[i][j]<<" , ";

                    }
                }



            }
            infile.close();
    }
    else
    {
            cout << "Error opening file";
    }

    cout<<" \nPress any key to continue\n";
    cin.ignore();
    cin.get();


   return 0;
}
于 2012-10-15T09:05:47.573 に答える
-1
#include <vector>
#include <fstream>
#include <iostream>

using namespace std;

void write(int m, int n)
{
    ofstream ofs("data.txt");
    if (!ofs) {
        cerr << "write error" << endl;
        return;
    }

    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            ofs << i+j << " ";
}

void read(int m, int n)
{
    ifstream ifs("data.txt");
    if (!ifs) {
        cerr << "read error" << endl;
        return;
    }

    vector<float> v;
    float a;
    while (ifs >> a) v.push_back(a);

    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            cout << "[" << i << "][" << j << "] = "
                 << v[i*n+j] << ", ";
}

int main()
{
    write(2,2);
    read(2,2);

    return 0;
}
于 2012-10-15T01:19:54.423 に答える