0

C# といくつかの web-dev 言語を簡単に使用したことがありますが、私は C++ にはまったく慣れていません。データベースを既知の場所に .txt ファイルとして保存しています。.txt ファイルの最初の行は、データベース内の項目数です。すべての値が同じ形式であるため、すべての値を読み取る Struct があります。

ファイルを読み取り、そこにあるアイテムの数の整数値を与えるコードを書くことができました。データを構造体の配列に読み込むのに助けが必要です。

データベースの例は

3

NIKEAIRS
9
36.99

CONVERSE
12
35.20

GIFT
100
0.1

私の構造体は

struct Shoes{
   char Name[25];
   unsigned int Stock;
   double Price;
};

アイテムの数を読み取るための私のコードは

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


int main ()
{
    char UserInput;

    string NumOfItems; //this will contain the data read from the file
    ifstream Database("database.txt"); //opening the file.
    if (Database.is_open()) //if the file is open
    {
        int numlines;
        getline (Database,NumOfItems);
        numlines=atoi(NumOfItems.c_str());
        cout<<numlines;
    }
    else cout << "Unable to open file"; //if the file is not open output
    cin>>UserInput;
    return 0;
}

続行する方法についていくつかの指針がありますか。

4

2 に答える 2

2

このようなものはどうですか?これを行うためのより効率的な方法があることは知っていますが、少なくともこれにより、正しい方向に進むことができます。乾杯!

#include <iostream>
#include <fstream>
#include <string>

#include <vector>
#include <stdlib.h>

using namespace std;

struct Shoes {
    char Name[25];
    unsigned int Stock;
    double Price;
};

vector<Shoes> ShoeList;

static Shoes readShoe(std::ifstream& fs)
{
    char buffer[200];               //  temporary buffer
    Shoes s;

    fs.getline(buffer, sizeof(buffer));     // newline
    fs.getline(s.Name, sizeof(buffer));     // name
    fs.getline(buffer, sizeof(buffer));     // amt in stock
    s.Stock=atoi(buffer);
    fs.getline(buffer, sizeof(buffer));     // price
    s.Price=strtod(buffer, 0);

    return s;
}

int main ()
{
    char UserInput;

    string NumOfItems; //this will contain the data read from the file
    ifstream Database("database.txt"); //opening the file.
    if (Database.is_open()) //if the file is open
    {
        int numlines;
        getline (Database,NumOfItems);
        numlines=atoi(NumOfItems.c_str());
        cout<<numlines;

    cout << endl;
    for(int i=0; i < numlines; ++i)
    {
        Shoes s = readShoe(Database);
        ShoeList.push_back(s);
        cout << "Added (Name=" << s.Name << "," << s.Stock << "," << s.Price << ") to list." << endl;
    }

    }
    else cout << "Unable to open file"; //if the file is not open output

    cin>>UserInput;

    return 0;
}
于 2012-11-11T16:36:48.357 に答える
0
for (int i = 0; i < numlines; ++i)
{
 Shoes sh();
 Database >> sh.Name >> sh.Stock >> sh.price;
 //do something with sh (add it to a list or a array for example
}
于 2012-11-11T16:12:41.617 に答える