2011-12-08 51 views
-1

好吧所以我已經嘗試了一切。我有下面的類,我有一個驅動程序,它將讀取一個文件並使用getline獲取所有內容並將其作爲字符串複製。我的司機我也有vector<Seminar>STL和從字符串到矢量的數據

我很困惑的是如何把我的數據從字符串到矢量。現在我想,也許首先我需要做一個構造函數等這個工作?

我似乎無法執行它的權利。

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

你需要編寫一個方法,它從你的文件中提取一個字符串(假定是),將數據解析成數字,日期和標題字段,然後將數據保存到一個'Seminar'對象中。你可以讓這個方法成爲構造函數,或者重載流操作符('<<'),或者只是一個常規方法。隨你便。你不需要做任何特殊的事情來把這個對象放到一個vector中(推測使用'push_back'或其他東西),因爲vector會使用對象的拷貝構造函數來拷貝它,而你的對象的默認拷貝構造函數就足夠了。 – 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'的實例,根據你的聲明,它將是'Seminar seminar1(int,string,string)'。然後你可以將它存儲在你的'vector all'中。 – Omar