2011-12-08 9 views
-1

これですべてを試しました。私は以下のクラスを持っており、ファイルを読み込んでgetlineを使ってすべてのコンテンツを取得し、それを文字列としてコピーするドライバを持っています。STLと文字列からベクトルへのデータ

私のドライバにはvector<Seminar>もあります。

私が混乱しているのは、データを文字列からベクターに配置する方法です。今私はおそらく最初に私はこれが動作するようにコンストラクタなどを作る必要があると思っていた?

私はそれを正しく実装するようです。あなたはベクトル<文字列>をお持ちの場合は

class Seminar 
{ 
    public: 

     Seminar(int number = 0, string date = "yyyy-mm-dd" , string title = "") 
     { 
      Number = number; 
      Date = date; 
      Title = title; 
     } 

     int get_number() const {return Number; } 
     string get_date() const {return Date; } 
     string get_title() const {return Title; } 

    private: 
     int Number;  // Seminar number 
     string Date;  // Date of Seminar 
     string Title; // Title of Seminar 
}; 





enter code here 
    vector<Seminar> all; 
    main() 
ifstream InFile; 
string Letter; 
string File; 
cout << "Type Letter from the Menu: "<<endl; 
cin >> Letter; 

if (Letter == "A" || "a") 
{ 

    cout << "What is the file you would like to read: "<<endl; 
    cin >> File; 
    InFile.open(File.c_str(),ios::in); 
    if(InFile) 
    { 
     string line = ""; 
     while(getline(InFile,line)) 
     { 
      cout << line << endl; 
     } 
    InFile.close(); 

    } 
}`enter code here` 
+4

私は混乱しているが。私は 'vector'の使用方法は見当たりません。どこで使うのかは分かりません。 –

+1

あなたの文字列はどうなっていますか?文字列からセミナーのオブジェクトを既に取得しましたか? –

+1

ファイルから文字列を取り、おそらくデータをnumber、date、およびtitleフィールドに解析し、そのデータを 'Seminar'オブジェクトに保存するメソッドを記述する必要があります。このメソッドをコンストラクタ、またはオーバーロードされたストリーム演算子( '<<')、または単に通常のメソッドにすることができます。それはあなた次第です。ベクターがオブジェクトのコピーコンストラクタを使ってそれをコピーし、あなたのオブジェクトのデフォルトのコピーコンストラクタで十分であるため、そのオブジェクトをベクターに入れるのに特別なことをする必要はありません( 'push_back'などを使用します)。 – indiv

答えて

0

、それに値を追加するpush_back()を使用しています。

std::vector<std::string> foo; 

foo.push_back("hi there!"); 
+0

非常にありがとう、 cout foo [0]あなたの "hi there"をワード線で切り替えると空になります。 – user1072583

1

次のようなものは正しい方向にポイントする必要があります。

#include<vector> 
#include<iostream> 
#include<string> 

int main() 
{ 
    std::vector<std::string> myStringVector; 
    myStringVector.push_back("First"); 
    myStringVector.push_back("Second"); 

    std::cout<<myStringVector[0]<<"\n"<<myStringVector[1]<<"\n"; 

    return 0; 
} 

そして、私はあなたのケースでは、あなたのような何かをする必要があるかもしれないと思う:

Seminar seminar1(<data here>); 
std::vector<Seminar> seminarVector; 
seminarVector.push_back(seminar1); 
+0

はどうなりますか?私はすべてのデータをコピーした文字列ですか? – user1072583

+0

それはあなたの宣言に基づいて 'Seminar seminar1(int、string、string)'となる 'Seminar'のインスタンスをどのように作成するかによって異なります。これを 'ベクトル all'に格納することができます。 – Omar

関連する問題