2017-04-13 9 views
0

データの入力方法がわかりません。申し訳ありませんが、私はノブです。このようなことで見つかった唯一の例は、あまりにも複雑で、何が起こっているのか理解できません。私はこれが正しいとは限りませんが、私はファイルからの入力をどのように設定するか分かりません。マイファイルのデータは、次のようになります。ファイルからクラスオブジェクトの配列への入力C++

986 8 
432 24 
132 100 
123 89 
329 50 
503 30 
783 78 
822 32 
233 56 
322 74 

そして、私のプログラムは、これまでに次のようになります。

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

int main() 
{ 
    ifstream fin("YourTxtFile.txt"); 
    fin >> something //Fin acts just like your standard cin 

    fin.close() //Don't forget to close the stream when you're done! 
} 

したい場合:入力すると、ファイルから

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


// This program defines a class called Inventory that has itemnumber (which 
// contains the id number of a product) and numofitem (which contains the 
// quantity on hand of the corresponding product)as private data members. 
// The program will read these values from a file and store them in an 
// array of objects (of type Inventory). It will then print these values 
// to the screen. 

// Example: Given the following data file: 
//  986 8 
//  432 24 
// This program reads these values into an array of objects and prints the 
// following: 
//  Item number 986 has 8 items in stock 
//  Item number 432 has 24 items in stock 


const int NUMOFPROD = 10; // This holds the number of products a store sells 

class Inventory 
{ 
public: 

    void getId(int item);  // This puts item in the private data member 
           // itemnumber of the object that calls it. 
    void getAmount(int num); // This puts num in the private data member 
           // numofitem of the object that calls it. 
    void display();   // This prints to the screen 
           // the value of itemnumber and numofitem of the 
           // object that calls it. 



private: 

    int itemNumber;   // This is an id number of the product 
    int numOfItem;   // This is the number of items in stock 

}; 


int main() 
{ 

    ifstream infile;  // Input file to read values into array 
    infile.open("inventory.dat"); 

    // Fill in the code that declares an array of objects of class Inventory 
    // called products. The array should be of size NUMOFPROD 
    Inventory products[NUMOFPROD]; 

    int pos;     // loop counter 
    int id;     // variable holding the id number 
    int total;     // variable holding the total for each id number 

    // Fill in the code that will read inventory numbers and number of items 
    // from a file into the array of objects. There should be calls to both 
    // getId and getAmount member functions somewhere in this code. 
    // Example: products[pos].getId(id); will be somewhere in this code 
    pos = 0; 
    while(NUMOFPROD > pos++ && infile >> products[pos]) 
    { 
     id = products[pos]; 
     products[pos].getId(id); 


     //products[pos].getAmount(total); 
    } 
    infile.close(); 
    // Fill in the code to print out the values (itemNumber and numOfItem) for 
    // each object in the array products. 
    // This should be done by calling the member function display within a loop 
    pos = 0; 
    while(NUMOFPROD > pos++) 
    { 
     products[pos].display(); 
    } 

    return 0; 

} 


// Write the implementations for all the member functions of the class. 

void getId(int item) 
{ 
    itemNumber = item; 

} 
void getAmount(int num) 
{ 
    numOfItem = num; 
} 
void display() 
{ 
    cout << itemNumber << " "; 
} 
+0

google protobufを使用してください。 https://stackoverflow.com/questions/10842066/parse-in-text-file-for-google-protocol-buffer – sailfish009

答えて

0

は、これを行いますファイルに出力するには、次のようにしてください:

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

int main() 
{ 
    ofstream fout("YourTxtFile.txt"); 
    fout >> something //Fout acts just like your standard cout 

    fout.close() //Don't forget to close the stream when you're done! 
} 

同時に両方を行うことができます!

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

int main() 
{ 
    ifstream fin("YourTxtFile1.txt"); 
    fin >> something //Fin acts just like your standard cin 

    fin.close() //Don't forget to close the stream when you're done! 

    ofstream fout("YourTxtFile2.txt"); 
    fout >> something //Fout acts just like your standard cout 

    fout.close() //Don't forget to close the stream when you're done! 
} 

ちょうどあなたが知っているように、フィンとfoutは、あなたが望むところで呼び出すことができます。

この投稿があなたの質問に答える場合は、回答としてマークしてください。

ありがとうございました

+0

どうもありがとうございますが、同じ行にある2つの数値をクラスオブジェクトの配列に入力するにはどうすればよいですか例のように? – KLG52486

+0

fin >> num1 >> num2;配列[i] .itemNumber = num1;配列[i] .numOfItem = num2; forループで実行します。または、もっと良いことに、fin >> array [i] .itemNumber >> array [i] .numOfItem; –

+0

回答として私の投稿をマークしていただければ幸いです –

関連する問題