【问题标题】:Program for a Vector of Strings字符串向量程序
【发布时间】:2014-11-25 04:46:44
【问题描述】:

我创建了一个程序,要求用户输入 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;
}

【问题讨论】:

  • vector&lt;string&gt; names (23); 以 23 个空字符串开始,然后再将 5 个字符串推到其后面(总共 28 个),然后输出第一个字符串(仍然为空)。建议取出(23)

标签: c++ string vector


【解决方案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;
}

【讨论】:

    【解决方案2】:

    您已将其作为 if 语句输入。改成while循环

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

    【讨论】:

    • 还需要确保您不超过向量中的名称数量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多