Форум программистов, компьютерный форум CyberForum.ru

strlen("Русский текст") - C++

Восстановить пароль Регистрация
 
AntyDES
-1 / 0 / 0
Регистрация: 07.04.2011
Сообщений: 6
07.04.2011, 18:48     strlen("Русский текст") #1
Скорее всего данный вопрос уже поднимался...

strlen("Русский текст") не может правильно обработать кириллицу.

Латинские символы занимают один байт, а русские - два байта. Знаю что проблема в кодировке, но не знаю как устранить проблему. Символы вывода и ввода отоброжаются нормально.

P.S.: Windows Vista, NetBeans + cygwin
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2011, 18:48     strlen("Русский текст")
Посмотрите здесь:

C++ пдскажите функцию которая выводит русский текст на экран и его заголовочный файл с++ но не system ( " echo текст " );
Написать текст функции strcat(), "склеивающей" две текстовые строки C++
Дан текст, определить количество слов "кот" C++
Ошибка работы с классом ("функция.уже имеется текст реализации") C++
C++ Ошибка "Необработанное исключение" в программе с strlen и strtok
Зашифровать текст "Hello people!" в символы в Visual C++. C++
Шифрование-Дешифрование - После дешифрования, текст "сползает" со своих мест C++
Дан текст. Стереть все символы "*", встречающиеся в тексте C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
07.04.2011, 18:52     strlen("Русский текст") #2
C++
1
setlocale(LC_CTYPE, "rus.1251");
AntyDES
-1 / 0 / 0
Регистрация: 07.04.2011
Сообщений: 6
07.04.2011, 19:28  [ТС]     strlen("Русский текст") #3
Цитата Сообщение от iama Посмотреть сообщение
C++
1
setlocale(LC_CTYPE, "rus.1251");
Не помогло. Также не помогает ни setlocale(LC_ALL, "Russian"); ни setlocale(LC_CTYPE, "rus.1251");. Что с ними, что без них - результат одинаковый.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char** argv) {
    char* text = "Кириллица";
    cout << text << " [" << strlen(text) << "]\n";
}
Код
Кириллица [18]
Для закрытия терминала нажмите [Enter]...
Yandex
Объявления
07.04.2011, 19:28     strlen("Русский текст")
Ответ Создать тему
Опции темы

Текущее время: 15:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru