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

Zliczanie liter w tekście z wykorzystaniem polskich znaków.
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
#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ć?

Kopiuj
#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;
}
PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
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

Kopiuj
setlocale(LC_ALL, "Polish_Poland.852"); 
  • Rejestracja: dni
  • Ostatnio: dni
0

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

http://ifotos.pl/z/qpprnha

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
1

Zmień isalpha na iswalpha.

  • Rejestracja: dni
  • Ostatnio: dni
0

Działa, wielkie dzięki :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.