Funkcja zamieniająca małe na duże litery - włącznie z polskimi

0

Witam
Jak w temacie. Zna może ktoś taką funkcję? Przeszukałem internet i nic nie znalazłem. Program jest pod konsolę.
Z góry dzięki

0

taaa Internet mówisz? I pewnie do tego cały? :] http://lmgtfy.com/?q=c%2B%2B+uppercase

0

poczytaj o ascii zobacz jaka jest różnica między np 'a' i 'A' (podpowiem 32) i dalej powinieneś już wiedzieć jak to wykorzystać (podpowiem, żadnej funkcji nie potrzebujesz pomimo, że takowe istnieją jak to wyżej kolega chyba podał)

0

I może mi jeszcze powiesz że u ciebie to śmiga na polskich znakach?

0

toupper();

0
kofii12345 napisał(a)

I może mi jeszcze powiesz że u ciebie to śmiga na polskich znakach?

To w tym przypadku odbiję piłeczkę: skąd mamy wiedzieć, na jakim systemie pracujesz? Bo rozwiązanie też zależy od tego, czy jest to Windows, czy Linux...

0
kofii12345 napisał(a)

I może mi jeszcze powiesz że u ciebie to śmiga na polskich znakach?

pytałeś o polskie znaki? Nie zadziała tak samo jak dla innych specjalnych znaków ale o nich też nic nie mówiłeś. Nie dziwię się, że "przeszukałeś cały internet" i nic znaleźć nie potrafiłeś skoro nawet precyzyjnie pytania nie umiesz zadać :)

0

jak nie mowiłem jak mowiłem:) windows oczywiscie

0

Sorry, że jeszcze nie zapytałem. Aplikacja GUI (okienkowa) czy CLI (w terminalu)? Jak się nie mylę, w polskim Windows w terminalu/wierszu polecenia jest strona kodowa Latin2. Można byłoby zrobić tablicę, która odpowiedniemu znakowi ('ą', 'ę', ...) przyporządkowuje odpowiedni znak z tej strony kodowej. W przypadku GUI wydaje mi się, że zadziałałaby zwykła zamiana 'ą', 'ę' na 'Ą', 'Ę', ...

0

Wystarczy zrobić to w ten sposób:

char ciag[9] = {"aąęćb"};
for(int i = 0; i < 6; i++)
    if(ciag[i] >= 'a' && ciag[i] <= 'z')
        ciag[i] = ciag[i] + ('A' - 'a');
    else if(ciag[i] == 'ą')
        ciag[i] = 'Ą';
    else if(/*...tutaj wszystkie poslkie znaki w oddzielnych ifach*/) // z tego względu, że one chyba nie są pokolei
0
kofii12345 napisał(a)

jak nie mowiłem jak mowiłem:) windows oczywiscie

Nie aż takie oczywiste.
Obejrzyj jakie wartości mają poszczególne polskie znaki w różnych kodowaniach i potem sprawdzaj i zamieniaj. Można założyć że znak 0-127 to nie jest polski, natomiast <0 (w unsigned: 127<) to już jest jakiś polski znak. W przypadku UTF-8 są 2 bajty, więc funkcja sprawdzająca powinna otrzymać nie char, tylko char* i nie zwracać małą literę, bo to z UTF było by trudne raczej, tylko od razu najlepiej zamieniać, skoro i tak wskaźnik przekazujesz.

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