Передача строки по ссылке в c ++ - PullRequest
0 голосов
/ 09 апреля 2020

Я работаю над кодом для моего класса C ++. Назначение состоит в том, чтобы прочитать имена из 2 различных текстовых файлов (уже в моем каталоге) и найти, соответствует ли строка / имя, которое искал пользователь, любому из имен, уже находящихся в файлах. Мой код кажется мне хорошим, но я получаю ошибку в прототипе своей функции, говорящую «строка не была объявлена ​​в этой области». Любые решения? Мой код здесь выглядит следующим образом:

   #include <fstream>
   #include <string>
   #include <vector>
   void boysfunc(string&, string&);
   void girlsfunc(string&, string&);
   using namespace std;
   int main()
   {
    vector<string> boysnames;
    vector<string> girlsnames;
    string boysname, girlsname;
    ofstream outputFile;
    cout << "Enter a boy's name, or N if you do not want to 
   enter a name: ";
    cin >> boysname;
    cout << "Enter a girl's name, or N if you do not want to 
   enter a name: ";
    cin >> girlsname;
    if (boysname != "N")
    {
    boysfunc(boysname, boysnames);
    }
    if (girlsname != "N")
    {
    girlsfunc(girlsname, girlsnames);
    }
   }
   void boysfunc(string &boysname, string &boysnames)
   {
    outputFile.open("BoysNames.txt");
        while(outputFile >> boysnames)
    {
        /*Declare local variable count to use as a counter*/
            int count = 0;
            if (boysnames(count) == boysname)
            {
                outputFile.close();
                cout << "The name " << boysname << " is very 
   popular among boys.";
                return;
            }
            else
            {
            count++;
            }
        }
    }
   void girlsfunc(string &girlsname, string &girlsnames)
   {
    outputFile.open("GirlsNames.txt");
        while(outputFile >> girlsnames)
    {
        /*Declare local variable count to use as a counter*/
            int count = 0;
            if(girlsnames(count) == girlsname)
            {
                outputFile.close();
                cout << "The name " << boysname << " is very 
   popular among girls.";
                return;
                }
                else
                {
                    count++;
                }
    }
   }  

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Здесь нужно исправить две основные ошибки.

  • using namespace std; должно быть записано перед использованием строк, если вы хотите sh опустить std:: перед записью string. В противном случае вы можете написать std::string& в объявлениях функций.
  • boysfunc() и girlsfunc() принимают vector<string>& в качестве второго аргумента, тогда как вы неправильно упомянули string& в объявлении и определении функций , Исправьте это.
0 голосов
/ 09 апреля 2020

В этом фрагменте

string s = "hello";
using namespace std;

тип string неизвестен компилятору. Вот что делает using namespace std;. Это в основном превращает string в std::string.

Вы могли бы поменять местами 2 строки выше, и это будет работать , но я настоятельно рекомендую просто сказать std::string явно везде. Я уверен, что ваша IDE позволит вам сделать это легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...