2013-10-08 80 views
2

我想通過for循環將多個字符串添加到一個矢量中,我可以很容易地用一個數組來做到這一點,但我在向量上做同樣的事情時遇到了麻煩。下面是我想嘗試轉換爲矢量的數組的一個示例。通過循環的C++矢量輸入

陣列樣式

String StudentNames[]; 
int StudentNumbers; 
for(int i = 0; StudentNumbers > i; i++){ 
cin >> StudentNames[i]; 
} 

矢量樣式

vector<string> StudentNames; 
int StudentNumbers; 
//How do i add a for loop using vector and add strings to it similar to the array above? 

回答

4

使用std::vector::push_backstd::getline爲: -

std::string sn; //temporary string 

for(int i = 0; StudentNumbers > i; i++){ 
std::getline(std::cin, sn); 

StudentNames.push_back(sn); 
} 

然後你就可以訪問第i個名字作爲StudentNames[i]

3

的一種方法是與用於循環正確的大小創建矢量:

int StudentNumbers = ....; 
std::vector<std::string> studentNames(StudentNumbers); 
for(auto it = studentNames.begin(), end = studentNames.end(); it != end; ++it){ 
    std::cin >> *it; 
} 

int StudentNumbers = ....; 
std::vector<std::string> studentNames(StudentNumbers); 
for(auto& s = 0; studentNames){ 
    std::cin >> s; 
}