c ++创建一个函数,该函数将根据第一个字母按字母顺序[关闭]

问题描述 投票:-1回答:1

我正在尝试创建一个程序,该程序将使用输入/输出文件仅基于首字母来按字母顺序排列名称。

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>

using namespace std;
const int SIZE = 50;
void writeletter(string names[], int size, char letter, ostream& out);
int main()
{
  ifstream in;
  ofstream o;
  string n[SIZE];
  int s=0;



  in.open("input.txt");
  o.open("output.txt");
  if(in.fail())
  {
    cout<<"fail"<<endl;
    exit(1);
  }
  if(o.fail())
  {
    cout<<"fail"<<endl;
    exit(1);
  }
  while (!in.eof())
  {
    in>>n[s];
    s++;
  }
  char l[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  for(int i =0; i<s; i++)
    writeletter(n,s,l[i],o);
  in.close();
  o.close();
  return 0;
}
void writeletter(string names[], int size, char letter, ostream& out)
{
  for(int i = 0; i < size; i++)
  {
      if(names[i]==letter[i][0])
      out<<names[i]<<endl;
  }
}

这是我得到的错误

46:23:错误:下标的值不是数组,指针或向量

这是给我writeletter()函数中的if语句的。我认为大多数代码是正确的。

c++ arrays alphabetical
1个回答
0
投票

正如编译器指出的那样,只能使用[]运算符来访问某些内容。一个char没有任何元素,因此访问它毫无意义,并且编译器也不允许您这样做。也许它曾经是不同的类型,并且重构破坏了某些东西。

我怀疑代码应该是这样的:

void writeletter(string names[], int size, char letter, ostream& out)
{
  for(int i = 0; i < size; i++)
  {
      if(names[i][0]==letter)
      out<<names[i]<<endl;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.