Char и русские символы

перевожу строку в целочисленное число
int a=int(first_string[start_ch]);
получаю отрицательные числа, это скорее всего потому что в ACSII нету русских символов, они в UNICODE, есть ли способ получить нормальный индекс символа? кроме ABS

В ASCII есть русские символы. Но их наличие зависит от кодовой страницы.

Символы кириллицы имеют коды больше 128. Т.е. старший бит в байте установлен. Следовательно при расширении байта в int старший бит будет распространён влево — получаем отрицательное число.

Так должно работать:

int a=int(first_string[start_ch]) & 0x00ff;

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.