Zliczanie liter w tekście z wykorzystaniem polskich znaków.

0

Działa i zlicza mi wszystkie znaki które wkleję w napis

#include <iostream>
#include <string>

int main()
{
	setlocale(LC_ALL, "");

	std::cout << "Wklej tekst" << std::endl;
	std::string napis = "";
	std::getline(std::cin, napis);

	auto licznik = 0;
	for (int i = 0; i < napis.length(); ++i)
	{
		++licznik;
	}
	std::cout << licznik << std::endl;
}

Tutaj też zlicza ale tylko liter. Problem jest taki, że nie wykrywa polskich znaków. (Wyżej oczywiście wykrywa, tutaj problemem jest isalpha) - da się to jakoś naprawić?

#include <iostream>
#include <string>

int main()
{
	setlocale(LC_ALL, "");

	std::cout << "Wklej tekst" << std::endl;
	std::string napis = "";
	std::getline(std::cin, napis);

	auto licznik = 0;
	for (int i = 0; i < napis.length(); ++i)
	{
		if (isalpha(napis[i]))
		{
			++licznik;
		}
	}
	std::cout << licznik << std::endl;
}
1

jeżeli chcesz mieć polskie znaki to musisz ustalić w setlocale odpowiednie kodowanie znaków. Dla przykładu w windowsie w konsoli wystarczy, że będzie takie kodowanie

setlocale(LC_ALL, "Polish_Poland.852"); 
0

Niestety nie działa. Wyskakuje mi błąd.

http://ifotos.pl/z/qpprnha

1

Zmień isalpha na iswalpha.

0

Działa, wielkie dzięki :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1