Хочу написать функцию перевода русских букв в нижний регистр Пишу на MS Visual Studio C++ 6 делаю так #include <windows.h> #include <ctype.h> SetConsoleCP(1251); SetConsoleOutputCP(1251); setlocale(LC_ALL,"Russian"); *ptr = tolower(*ptr); но почемуто не все буквы переводит в нижний регистр например символы РВГ не переводит а вот символ И переводит, странно это всё... Кто с этим сталкивался? подскажите что не так
Возможно это поможет: In C++, a locale-specific template version of this function (tolower) exists in header <locale>.
Пробывал подключать двумя методами #include <locale.h> #include <locale> и тоже самое ничего не изменилось
У меня просьба к тем у кого есть MS Visual Studio C++ 6 откомпилируйте и запустите этот код какой у вас будет результат? у меня буквы ВГ перевело в нижний регистр а вот букву И не перевело PHP: #include "stdafx.h" #include <windows.h> #include <ctype.h> #include <locale.h> int main(int argc, char* argv[]) { SetConsoleCP(1251); SetConsoleOutputCP(1251); setlocale(LC_ALL,"Russian"); char Str[]="ВГВГИИИИ"; for(size_t x=0; x < strlen(Str); x++) Str[x] = tolower(Str[x]); return 0; }
посмотрите разницу между диапазонами OEM кодов и ASCII для OEM она варьируется надо юзать CharLower CharUpper из kernel32.dll а для ASCII надо просто c |= 0x20 c &= ~0x20 для смены регистра Code: 0 0x0 00000000 ☺ 1 0x1 00000001 ☻ 2 0x2 00000010 ♥ 3 0x3 00000011 ♦ 4 0x4 00000100 ♣ 5 0x5 00000101 ♠ 6 0x6 00000110 7 0x7 00000111 8 0x8 00001000 9 0x9 00001001 10 0xa 00001010 ♂ 11 0xb 00001011 ♀ 12 0xc 00001100 13 0xd 00001101 ♫ 14 0xe 00001110 ☼ 15 0xf 00001111 ► 16 0x10 00010000 ◄ 17 0x11 00010001 ↕ 18 0x12 00010010 ‼ 19 0x13 00010011 ¶ 20 0x14 00010100 § 21 0x15 00010101 ▬ 22 0x16 00010110 ↨ 23 0x17 00010111 ↑ 24 0x18 00011000 ↓ 25 0x19 00011001 → 26 0x1a 00011010 ← 27 0x1b 00011011 ∟ 28 0x1c 00011100 ↔ 29 0x1d 00011101 ▲ 30 0x1e 00011110 ▼ 31 0x1f 00011111 32 0x20 00100000 ! 33 0x21 00100001 " 34 0x22 00100010 # 35 0x23 00100011 $ 36 0x24 00100100 % 37 0x25 00100101 & 38 0x26 00100110 ' 39 0x27 00100111 ( 40 0x28 00101000 ) 41 0x29 00101001 * 42 0x2a 00101010 + 43 0x2b 00101011 , 44 0x2c 00101100 - 45 0x2d 00101101 . 46 0x2e 00101110 / 47 0x2f 00101111 0 48 0x30 00110000 1 49 0x31 00110001 2 50 0x32 00110010 3 51 0x33 00110011 4 52 0x34 00110100 5 53 0x35 00110101 6 54 0x36 00110110 7 55 0x37 00110111 8 56 0x38 00111000 9 57 0x39 00111001 : 58 0x3a 00111010 ; 59 0x3b 00111011 < 60 0x3c 00111100 = 61 0x3d 00111101 > 62 0x3e 00111110 ? 63 0x3f 00111111 @ 64 0x40 01000000 A 65 0x41 01000001 B 66 0x42 01000010 C 67 0x43 01000011 D 68 0x44 01000100 E 69 0x45 01000101 F 70 0x46 01000110 G 71 0x47 01000111 H 72 0x48 01001000 I 73 0x49 01001001 J 74 0x4a 01001010 K 75 0x4b 01001011 L 76 0x4c 01001100 M 77 0x4d 01001101 N 78 0x4e 01001110 O 79 0x4f 01001111 P 80 0x50 01010000 Q 81 0x51 01010001 R 82 0x52 01010010 S 83 0x53 01010011 T 84 0x54 01010100 U 85 0x55 01010101 V 86 0x56 01010110 W 87 0x57 01010111 X 88 0x58 01011000 Y 89 0x59 01011001 Z 90 0x5a 01011010 [ 91 0x5b 01011011 \ 92 0x5c 01011100 ] 93 0x5d 01011101 ^ 94 0x5e 01011110 _ 95 0x5f 01011111 ` 96 0x60 01100000 a 97 0x61 01100001 b 98 0x62 01100010 c 99 0x63 01100011 d 100 0x64 01100100 e 101 0x65 01100101 f 102 0x66 01100110 g 103 0x67 01100111 h 104 0x68 01101000 i 105 0x69 01101001 j 106 0x6a 01101010 k 107 0x6b 01101011 l 108 0x6c 01101100 m 109 0x6d 01101101 n 110 0x6e 01101110 o 111 0x6f 01101111 p 112 0x70 01110000 q 113 0x71 01110001 r 114 0x72 01110010 s 115 0x73 01110011 t 116 0x74 01110100 u 117 0x75 01110101 v 118 0x76 01110110 w 119 0x77 01110111 x 120 0x78 01111000 y 121 0x79 01111001 z 122 0x7a 01111010 { 123 0x7b 01111011 | 124 0x7c 01111100 } 125 0x7d 01111101 ~ 126 0x7e 01111110 ⌂ 127 0x7f 01111111 А 128 0x80 10000000 Б 129 0x81 10000001 В 130 0x82 10000010 Г 131 0x83 10000011 Д 132 0x84 10000100 Е 133 0x85 10000101 Ж 134 0x86 10000110 З 135 0x87 10000111 И 136 0x88 10001000 Й 137 0x89 10001001 К 138 0x8a 10001010 Л 139 0x8b 10001011 М 140 0x8c 10001100 Н 141 0x8d 10001101 О 142 0x8e 10001110 П 143 0x8f 10001111 Р 144 0x90 10010000 С 145 0x91 10010001 Т 146 0x92 10010010 У 147 0x93 10010011 Ф 148 0x94 10010100 Х 149 0x95 10010101 Ц 150 0x96 10010110 Ч 151 0x97 10010111 Ш 152 0x98 10011000 Щ 153 0x99 10011001 Ъ 154 0x9a 10011010 Ы 155 0x9b 10011011 Ь 156 0x9c 10011100 Э 157 0x9d 10011101 Ю 158 0x9e 10011110 Я 159 0x9f 10011111 а 160 0xa0 10100000 б 161 0xa1 10100001 в 162 0xa2 10100010 г 163 0xa3 10100011 д 164 0xa4 10100100 е 165 0xa5 10100101 ж 166 0xa6 10100110 з 167 0xa7 10100111 и 168 0xa8 10101000 й 169 0xa9 10101001 к 170 0xaa 10101010 л 171 0xab 10101011 м 172 0xac 10101100 н 173 0xad 10101101 о 174 0xae 10101110 п 175 0xaf 10101111 ░ 176 0xb0 10110000 ▒ 177 0xb1 10110001 ▓ 178 0xb2 10110010 │ 179 0xb3 10110011 ┤ 180 0xb4 10110100 ╡ 181 0xb5 10110101 ╢ 182 0xb6 10110110 ╖ 183 0xb7 10110111 ╕ 184 0xb8 10111000 ╣ 185 0xb9 10111001 ║ 186 0xba 10111010 ╗ 187 0xbb 10111011 ╝ 188 0xbc 10111100 ╜ 189 0xbd 10111101 ╛ 190 0xbe 10111110 ┐ 191 0xbf 10111111 └ 192 0xc0 11000000 ┴ 193 0xc1 11000001 ┬ 194 0xc2 11000010 ├ 195 0xc3 11000011 ─ 196 0xc4 11000100 ┼ 197 0xc5 11000101 ╞ 198 0xc6 11000110 ╟ 199 0xc7 11000111 ╚ 200 0xc8 11001000 ╔ 201 0xc9 11001001 ╩ 202 0xca 11001010 ╦ 203 0xcb 11001011 ╠ 204 0xcc 11001100 ═ 205 0xcd 11001101 ╬ 206 0xce 11001110 ╧ 207 0xcf 11001111 ╨ 208 0xd0 11010000 ╤ 209 0xd1 11010001 ╥ 210 0xd2 11010010 ╙ 211 0xd3 11010011 ╘ 212 0xd4 11010100 ╒ 213 0xd5 11010101 ╓ 214 0xd6 11010110 ╫ 215 0xd7 11010111 ╪ 216 0xd8 11011000 ┘ 217 0xd9 11011001 ┌ 218 0xda 11011010 █ 219 0xdb 11011011 ▄ 220 0xdc 11011100 ▌ 221 0xdd 11011101 ▐ 222 0xde 11011110 ▀ 223 0xdf 11011111 р 224 0xe0 11100000 с 225 0xe1 11100001 т 226 0xe2 11100010 у 227 0xe3 11100011 ф 228 0xe4 11100100 х 229 0xe5 11100101 ц 230 0xe6 11100110 ч 231 0xe7 11100111 ш 232 0xe8 11101000 щ 233 0xe9 11101001 ъ 234 0xea 11101010 ы 235 0xeb 11101011 ь 236 0xec 11101100 э 237 0xed 11101101 ю 238 0xee 11101110 я 239 0xef 11101111 Ё 240 0xf0 11110000 ё 241 0xf1 11110001 Є 242 0xf2 11110010 є 243 0xf3 11110011 Ї 244 0xf4 11110100 ї 245 0xf5 11110101 Ў 246 0xf6 11110110 ў 247 0xf7 11110111 ° 248 0xf8 11111000 ∙ 249 0xf9 11111001 · 250 0xfa 11111010 √ 251 0xfb 11111011 № 252 0xfc 11111100 ¤ 253 0xfd 11111101 ■ 254 0xfe 11111110 * 255 0xff 11111111
вот так заработало PHP: #include "stdafx.h" #include <locale.h> #include <windows.h> int main(int argc, char* argv[]) { setlocale(LC_ALL,"Russian"); char Str[]="ВГВГИИИИИ"; CharLower(Str); return 0; }