Witam wszystkich.
Mam problem z napisaną funkcją ,która jak napomknąłem w temacie dodaje polskie znaki w konsoli
Kod:
#include <iostream>
using namespace std;
string pl(string napis)
{
int i;
int dlugosc=napis.length();
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ą');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ą')
{
napis.replace(i,1,"\245");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ć');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ć')
{
napis.replace(i,1,"\206");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ę');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ę')
{
napis.replace(i,1,"\251");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ł');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ł')
{
napis.replace(i,1,"\210");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ń');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ń')
{
napis.replace(i,1,"\344");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ó');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ó')
{
napis.replace(i,1,"\242");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ś');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ś')
{
napis.replace(i,1,"\230");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ż');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ż')
{
napis.replace(i,1,"\276");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ź');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ź')
{
napis.replace(i,1,"\253");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ą');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ą')
{
napis.replace(i,1,"\244");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ć');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ć')
{
napis.replace(i,1,"\217");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ę');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ę')
{
napis.replace(i,1,"\250");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ł');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ł')
{
napis.replace(i,1,"\235");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ń');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ń')
{
napis.replace(i,1,"\343");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ó');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ó')
{
napis.replace(i,1,"\340");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ś');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ś')
{
napis.replace(i,1,"\227");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ż');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ż')
{
napis.replace(i,1,"\275");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ź');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ź')
{
napis.replace(i,1,"\215");
}
}
}
}
return napis;
}
string abc="ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
int main()
{
cout << pl(abc) << endl;
return 0;
}
Problem głównie dotyczy litery "Ć" oraz "ą" , poniewarz "Ć" czyta jako "Ź" ,a "ą" jako "Ą".Co dziwne problemu niema gdy zostawie tylko te linie:
#include <iostream>
using namespace std;
string pl(string napis)
{
int i;
int dlugosc=napis.length();
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('ą');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='ą')
{
napis.replace(i,1,"\245");
}
}
}
}
for(i=0;i<dlugosc;i++)
{
int pozycja=napis.find('Ć');
if (pozycja!=string::npos)
{
for (i=0;i<=dlugosc;i++)
{
if (napis[i]=='Ć')
{
napis.replace(i,1,"\217");
}
}
}
}
}
string abc="ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
int main()
{
cout << pl(abc) << endl;
return 0;
}
Pomużcie prosze.