[C++] funkcja tolower - obsługa polskich znaków
Ostatnio zmodyfikowano 2013-12-26 17:02
Kefirek Temat założony przez niniejszego użytkownika |
[C++] funkcja tolower - obsługa polskich znaków » 2013-12-25 21:12:55 Witam
W moim programie funkcja tolower nie zmienia dużych polskich liter ze znakami diaktrycznymi(ŁĘĆŹŻÓĘŚ) na odpowiednie małe po czym program wywala błąd. Czy jest sposób aby funkcja tolower zamieniała je na małe????
|
|
Monika90 |
» 2013-12-25 23:26:19 std::locale loc( "nazwa locale dla danego języka i kodowania" ); char ch = 'Ł'; ch = std::tolower( ch, loc );
Nazwy locale nie są standaryzowane w C++, więc musisz sprawdzić w dokumentacji jakie nazwy są dostępne w używanym przez ciebie systemie. |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2013-12-26 10:58:03 Witam Jeżeli dane np: ŁĘŚĄŻŹÓ są przypisane do tab[] = "ŁĘŚĄŻŹÓ"; program działa natomiast po wprowadzeni danych do tab[] cin'em program wyświetla "Krzaczory" zamiast zmniejszonych liter z ogonkami. Poniżej kod: #include <iostream> #include <string> #include <locale>
int main() { std::locale loc( "polish" ); setlocale( LC_ALL, "polish" ); char tab[ 10 ]; for( std::string::size_type i = 0; i < strlen( tab ); ++i ) { std::cin >> tab[ i ]; std::cout << std::tolower( tab[ i ], loc ); } system( "pause" ); return 0; }
Pozdrawiam Kefirek |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2013-12-26 11:03:06 Problem rozwiązany - zabrakło: system("chcp 1250"); Pozdrawiam i dzięki za podpowiedż Monika90 Kefirek :-) |
|
Monika90 |
» 2013-12-26 11:07:59 Niezdefiniowane zachowanie. setlocale( LC_ALL, "polish" ); |
Nie jest potrzebne. Też nie jest potrzebne Jak chcesz przetwarzać tekst wpisany w konsoli, a kompilator to MSVC, to użyj std::locale loc( ".OCP" ); ch = std::tolower( ch, loc );
|
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2013-12-26 11:25:26 strlen(tab) - a co możnaby było użyć zamiast? Pozdrawiam Kefirek |
|
pekfos |
» 2013-12-26 14:06:35 strlen(tab) - a co możnaby było użyć zamiast? |
Można w tym przypadku użyć sizeof. Ale po co w ogóle używać tu tablicy? |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2013-12-26 14:40:52 sizeof(tab) = długości pamięci zarezerwowanej dla tab..... i tu byłby problem po wprowadzeniu mniejszej ilości znaków do tab niż jest zarezerwowanej na ten cel pamięci. W pętli z takim warunkiem wyjechałbyś poza zakres łańcucha (poza '/0')i byłby błąd.
|
|
« 1 » 2 |