2014-11-25 92 views
0

我創建了一個程序,要求用戶輸入5個記錄在字符串矢量中的名稱。之後程序應該抓住每個名字的第一個和最後一個字母並輸出它們。然而,我的程序在輸入名稱後很好地編譯,我沒有從程序中得到輸出。字符串矢量程序

任何人都可以幫助我解決此問題,以便它打印輸入的每個名稱的第一個和最後一個字符?

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

using namespace std; 

int main() 
{ 
vector<string> names; 
char first_letter; 
char last_letter; 
string name; 
int n = 0; 

for (int i =0; i < 5; i++) 
{ 
    cout << " Please enter a name: "; 
    cin >> name; 
    names.push_back(name); 
} 

if (!names[n].empty()) 
{ 
    first_letter = *names[n].begin(); 
    last_letter = *names[n].rbegin(); 
    cout << first_letter << " " << last_letter << endl; 
    n++; 
} 

return 0; 
} 
+1

'矢量名(23);'使得它與23個空字符串開始,然後你把5個字符串到的是後面(共28 ),那麼你輸出第一個(它仍然是空白的)。建議取出'(23)' – 2014-11-25 04:50:16

回答

1
#include <iostream> 
#include <algorithm> 
#include <vector> 
#include <string> 

using namespace std; 

int main() 
{ 
vector<string> names; 
char first_letter; 
char last_letter; 
string name; 
int n = 0; 

for (int i =0; i < 5; i++) 
{ 
    cout << " Please enter a name: "; 
    cin >> name; 
    names.push_back(name); 
} 

vector<string>::iterator itr = names.begin(); 
for(;itr!=names.end();itr++) 
{ 

    first_letter = *itr[n].begin(); 
    last_letter = *itr[n].rbegin(); 
    cout << first_letter << " " << last_letter << endl; 


} 
return 0; 
} 
0

您已將其作爲if語句輸入。將其更改爲一個while循環

while (!names[n].empty()) 
{ 
    first_letter = *names[n].begin(); 
    last_letter = *names[n].rbegin(); 
    std::cout << first_letter << " " << last_letter << endl; 
    n++; 
} 
+1

也需要確保你不超過向量中的名字數量 – 2014-11-25 04:54:37