Zdravím mám porovnat 3 řetězce.. Už to mám skoro celé.. Nevím jak ošetřit, aby když slovo napíšu jednou velkýma písmenky, nebo malými napsalo, že se jedná o stejné slovo. Slova se mají porovnávat významově, ne vzhledově :)
#include <iostream>
#include <string>
#include<stdio.h>
using namespace std;
int main()
{
string slovo1;
string slovo2;
string slovo3;
cout <<"Zadejte 3 slova:" << endl;
cin>>slovo1;
cin>>slovo2;
cin>>slovo3;
if(cin.fail())
{
cout<< "Nespravny vstup." << endl;
}
if (slovo1 != slovo2)
{
cout<<"Slovo1 a slovo2 nejsou stejna."<<endl;
}
else
{
cout<<"Slovo1 a slovo2 jsou stejna."<<endl;
}
if (slovo1 != slovo3 )
{
cout<<"Slovo1 a slovo3 nejsou stejna."<<endl;
}
else
{
cout<<"Slovo1 a slovo3 jsou stejna."<<endl;
}
if (slovo2 != slovo3 )
{
cout<<"Slovo2 a slovo3 nejsou stejna."<<endl;
}
else
{
cout<<"Slovo2 a slovo3 jsou stejna."<<endl;
}
cout<<"Pocet znaku ve slovo1 je: "<<slovo1.length()<<endl;
cout<<"Pocet znaku ve slovo2 je: "<<slovo2.length()<<endl;
cout<<"Pocet znaku ve slovo3 je: "<<slovo3.length()<<endl;
return 0;
}
Funkce z http://www.cplusplus.com/reference/locale/tolower/ konvertuje velké písmeno na malé. V ukázkovém kódu je ukazáno, jak projít řetězec, akorát se znaky posílají do výst. proudu. Zkusil bych zkonvertovaný znak zapsat na pozici původního znaku:
for (std::string::size_type i=0; i<slovo1.length(); ++i)
slovo1[i] = std::tolower(slovo1[i],loc);