2014-11-25 91 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