Петля, которая компилирует и работает в INT основной функции не скомпилируется при введении в отдельную функцию [закрыто] -- c++ пол Связанный проблема

Loop that compiles and runs in int main function wont compile when put into a separate function [closed]


-4
vote

проблема

русский
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»>
закрыто. Этот вопрос нуждается в Детали отладки . В настоящее время он не принимает ответы.

<Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 5.6A6.31 6.31 0 002.39 5.75C.49.39.76.93.76 1.5V.24C0 1.07.89 1.9 1.92 1.92.75C1.04 0 1.92-.83 1.92-1.9v-. 2C0-.6.26-1.15.7-1.6.26-1.15.7-1.48A6.32 6.32 0 0015 6.37ZM4.03 5.85A4.49 4.49 0 018 2.02A4.48 4,48 0 015 4.36 4.3 4,3 0 01-1.72 3.44C-01-1.74-1.5 1.9- 1.5 3.08V.1H7.2V-.14C0-1.23-.6-2.34-1.3-1.32.32-1.53-3.07A4.32.32.32 0 01-1.64-3.94ZM10 18A1 1 0 000-2х7А1 1 0 100 2H3Z ">

Хотите улучшить этот вопрос? Обновить вопрос, так что это на тему для переполнения стека.

Закрыто 4 года назад .

Улучшить этот вопрос .

У меня есть проблемы с циклом в моей функции, не компилируй. Я подозреваю, что это связано с тем, что он включает в себя строки в состоянии, но я не уверен.

Вот функция, которая не скомпилируется

 <код> int numWins(string team_array, string str) {     int i = 0;     int count = 0;     while (i <= 119) {         if (str == team_array[i]) {             count += 1;         }         i += 1;     } }   

Часть, с которой у меня возникли проблемы, это состояние в заявлении IF. Я получаю тонну ошибок при попытке компиляции с этой линией.

Тем не менее, цикл делает компиляцию, когда он находится в моей основной функции INT, как это

 <код> int main() {     int i = 0;     int count;     string teams[120];     string uteam;      ifstream infile;     infile.open("worldserieswinners.txt");      if (infile.fail()) //if the input file failed to open     {         cout << "input file did not open" << endl;         exit(-1); //stop execution of the program immediately     }      string str;     while (i <= 118) //might need to be 119     {         getline(infile, str);         teams[i] = str;         i += 1;     }     cout << "Enter a team: ";     getline(cin, str);     count = 0;     i = 0;     while (i <= 119) {         if (str == teams[i]) {             count += 1;         }         i += 1;     }     cout << "The " << str << " have won the World Series " << count << " time(s)."; }   

Когда петля такая, что он возвращает правильное значение просто отлично для вывода без ошибок. Любые предложения?

Редактировать: Ошибка определенного компилятора Я получаю:

[Ошибка] Нет совпадения для «оператора ==» (типы операндов - std :: string {aka std :: basic_string} 'и' char ')

Английский оригинал

I am having trouble with a loop in my function not compiling. I suspect that it has to do with the fact that it involves strings in the condition, but I am not sure.

Here is the function that wont compile

int numWins(string team_array, string str) {     int i = 0;     int count = 0;     while (i <= 119) {         if (str == team_array[i]) {             count += 1;         }         i += 1;     } } 

The part that I am having trouble with is the condition in the if statement. I get a ton of errors when trying to compile with that line.

However, the loop does compile when it is in my int main function like this

int main() {     int i = 0;     int count;     string teams[120];     string uteam;      ifstream infile;     infile.open("worldserieswinners.txt");      if (infile.fail()) //if the input file failed to open     {         cout << "input file did not open" << endl;         exit(-1); //stop execution of the program immediately     }      string str;     while (i <= 118) //might need to be 119     {         getline(infile, str);         teams[i] = str;         i += 1;     }     cout << "Enter a team: ";     getline(cin, str);     count = 0;     i = 0;     while (i <= 119) {         if (str == teams[i]) {             count += 1;         }         i += 1;     }     cout << "The " << str << " have won the World Series " << count << " time(s)."; } 

When the loop is like this, it returns the proper value just fine for the output with no errors. Any suggestions?

Edit: Specific compiler error I am getting is:

[Error] no match for 'operator==' (operand types are 'std::string {aka std::basic_string}' and 'char')

</div
  
       
       

Список ответов

2
 
vote
vote
Лучший ответ
 
 <код> int numWins (string team_array, string str)    

Эта функция принимает два параметра, оба из них являются строками.

 <код> if (str == team_array[i])   

<Код> str <код> std::string , <код> team_array[i] - <код> char . Весь <код> std::string нельзя сравнивать с одним <код> char .

<код> team_array Параметр должен быть <код> string *team_array или <код> if (str == team_array[i]) 0 .

 
int numWins (string team_array, string str)  

This function takes two parameters, both of them are strings.

if (str == team_array[i]) 

str is a std::string, team_array[i] is a char. An entire std::string cannot be compared to a single char.

The team_array parameter should probably be a string *team_array or a string team_array[].

</div
 
 
 
 

Связанный проблема

2  Создание хеша для данных больше, чем память (без зарядки)  ( Generating a hash for data larger than memory without getting arrested ) 
Добрый послеобеденный переполнец! ;) Что я хочу сделать: Я заинтересован в проверке передаваемой целостности файлов. Как я подошел к нему: Я рассм...

6  Singleton & Multi-Threading  ( Singleton multi threading ) 
У меня есть следующий класс <код> class Singleton { private: static Singleton *p_inst; Singleton(); public: static Singleton * instance()...

5  Что такое "для (x: y)"?  ( What is for x y ) 
Итак, я оглянулся на межпубки о нитках, и я пришел в блог / учебную вещь о нитках, но то, что меня смущено, была эта линия, которую он использовал <код> for...

1  Почему 64-битное целое расширение C ++ называется «долгим долгом»?  ( Why is the 64bit integer extension of c called long long ) 
В отличие от других типов: «int», "логический", "двойной" и т. Д. И даже таможенные классы, есть только одно слово. Однако только одно слово для их типа тольк...

0  Libusb_Bulk_Transfer добавляет CRC?  ( Does libusb bulk transfer add crc ) 
Я пишу программу пользовательского интерфейса для устройства USB в C ++, используя Visual Studio 2019. Я использую библиотеку Libusb. Я хочу сделать объемную ...

1  Шаблон статических классов через динамические связанные библиотеки  ( Template static classes across dynamic linked libraries ) 
У меня есть классовый класс со статическим значением, как это: <код> template <class TYPE> class A{ static TYPE value; }; в коде dll I назначаю ст...

-1  Бросить исключение, когда неправильный тип введен в  ( Throw exception when a wrong type is keyed in ) 
Я должен написать программу C ++, в которой функция состоит в том, чтобы прочитать два номера double Тип чисел из клавиатуры и добавить <код> try BLOCK, чт...

0  Использование аргументов Makefile без Foo =  ( Using makefile arguments without foo ) 
У меня есть makefile, который я использую для компиляции одного файла. Когда мне нужно пройти аргумент, я использую цель = TargetFile. Сценарий принимает ар...

-1  Неожиданный идентификатор ошибки - не уверен, почему (C ++)  ( Unexpected error id not sure why c ) 
IM Реализация программы C ++, по соображениям проекта оно должно быть включено в один файл, поэтому я не могу поставить то, что вы обычно в отдельном файле за...

501  Как использовать постоянную PI в C ++  ( How to use the pi constant in c ) 
Я хочу использовать постоянные и тригонометрические функции PI в некоторой программе C ++. Я получаю тригонометрические функции с помощью <код> include <math....

0  Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)"  ( Error argument of type void opca hello does not match void void ) 
Я написал очень простой код для резьбы. Поскольку я очень новый для этого, я понятия не имею об ошибке. <код> class opca_hello { public: void hello(); } v...

57  Как сделать макрос C ++ вести себя как функция?  ( How do i make a c macro behave like a function ) 
Допустим, по какой-то причине вам нужно написать макрос: <код> MACRO(X,Y) . (давайте предположим, что есть веская причина, по которой вы не можете использова...

1  Не можете получить программу Math C ++ для работы [дубликата]  ( Cant get math c program to work ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

0  Правильный способ использования вариационного шаблона функции вызова со строковыми аргументами C ++  ( Proper way of using variadic template function call with string arguments c ) 
Здравствуйте, что не то, что я здесь делаю, используя вариадические шаблоны через строку? Как правильно использовать его для достижения заданий ниже? <код> ...

0  Как настроить VS2008 для эффективного развития C ++  ( How to setup vs2008 for efficient c development ) 
Обычно I Программируйте в C #, но были вынуждены выполнять работу в C ++. Похоже, что интеграция с Visual Studio (2008) действительно плохо по сравнению с C #...

Связанный проблема

2  Создание хеша для данных больше, чем память (без зарядки) 
6  Singleton & Multi-Threading 
5  Что такое "для (x: y)"? 
1  Почему 64-битное целое расширение C ++ называется «долгим долгом»? 
0  Libusb_Bulk_Transfer добавляет CRC? 
1  Шаблон статических классов через динамические связанные библиотеки 
-1  Бросить исключение, когда неправильный тип введен в 
0  Использование аргументов Makefile без Foo = 
-1  Неожиданный идентификатор ошибки - не уверен, почему (C ++) 
501  Как использовать постоянную PI в C ++ 
0  Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)" 
57  Как сделать макрос C ++ вести себя как функция? 
1  Не можете получить программу Math C ++ для работы [дубликата] 
0  Правильный способ использования вариационного шаблона функции вызова со строковыми аргументами C ++ 
0  Как настроить VS2008 для эффективного развития C ++