Цитата Iska:
Зачем так много сравнений, зачем массив? Просто пробегаемся указателем до конца строки, проверяя диапазон кода символа от 'a' до 'z', и при попадании вычитаем от него разницу ('a'-'A'). »
|
Понял твою идею, но не понял немного что из чего вычитается?
Код 'A' = 65, 'a' = 97, если вычитать 97 - 65, то мы получим разницу, т.е. 32 и на всех парах B = b, C = c эта разница 32 неизменна
UpperCase
Код:

65 = A
66 = B
67 = C
68 = D
69 = E
70 = F
71 = G
72 = H
73 = I
74 = J
75 = K
76 = L
77 = M
78 = N
79 = O
80 = P
81 = Q
82 = R
83 = S
84 = T
85 = U
86 = V
87 = W
88 = X
89 = Y
90 = Z
LowerCase
Код:

97 = a
98 = b
99 = c
100 = d
101 = e
102 = f
103 = g
104 = h
105 = i
106 = j
107 = k
108 = l
109 = m
110 = n
111 = o
112 = p
113 = q
114 = r
115 = s
116 = t
117 = u
118 = v
119 = w
120 = x
121 = y
122 = z
У меня ничего не приходит на ум кроме как такого изврата.
Код:

...
AnsiString str = "MySting#1TeSt-результат проверки";
AnsiString newstr = "";
int len = str.Length();
char *ch;
ch = str.c_str();
for(int i = 0; i <= len; i++){
if(97 <= (int)ch[i] && 122 >= (int)ch[i])
newstr += ch[i];
else if(65 <= (int)ch[i] && 90 >= (int)ch[i])
newstr += char((int)ch[i] + 32);
}
Memo1->Lines->Add(newstr);
...
P.S. Немного наоборот сделал: UpperCase -> LowerCase