Witam. Otóż kompilator sygnalizuje mi taki błąd error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)
przy próbie kompilacji tego kodu:
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
//=============================================================================================================//
int funkcja(string nazwa)
{
string::size_type poz;
string zamienniki = "ABCDEFGJKLMNPQR";
poz = nazwa.find_last_of(zamienniki);
for(int i = 0; i < zamienniki.length(); i++)
{
if( nazwa.substr(poz, 1) == zamienniki[i] )
{
return i;
break;
}
}
}
//=============================================================================================================//
int main()
{
string modul;
cout << "Wprowadz nazwe modulu: ";
getline(cin, modul);
cout << "Ten modul ma numer: " << funkcja(modul);
getch();
}
Chodzi w nim o to, żeby napisać funkcję, która pełną nazwę moduły przesłaną do niej jako argument (np. "Cluster_M") rozpozna w taki sposób, że jako rezultat (typu int) zwróci numer modułu. Ów numer - to jakby numer litery, według takiego porządku "ABCDEFGJKLMNPQR". Na przykład nazwa "Cluster_M" - określa moduł numer 10.
Nie za bardzo rozumiem ten błąd. Przecież po jednej ze stron operatora == musi stać string, czyli u mnie ostatnia litera wycięta przy pomocy substr, no a z drugiej strony stoi sobie jeden element stringu, więc chyba też jest ok. A jednak nie bo nie działa :/ Pomożecie?