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

Стандартное определение длины строки в С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ пожалуйста нужно решить задачу на массивы по С!!! http://www.cyberforum.ru/cpp-beginners/thread33295.html
Дана целочисленная прямоугольная матрица. определить: 1) количество столбцов, содержащих хотябы один нудевой элемент 2)номер строки в которой находится самая длинная серия одинаковых элементов зараннее оч благодарна! вопрос жизни и смерти!
C++ Объект cin и его метод cin.get() Вот код программы: #include <iostream.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main() { char a; http://www.cyberforum.ru/cpp-beginners/thread33286.html
C++ Функции и файлы (Павловская Т.А.) Вариант 18
Здравствуйте, куча лаб и все ндо сделать до понедельника-вторника... Помогите, чем сможете, оч прошу, обещаю учиться лучше и помогать потом буду)) А щас прошу мне помочь =( Для хранения данных о ноутбуках описать структуру вида, описанного ниже struct NOTEBOOK { struct disp_res { // разрешающая способность дисплея int x; // по горизонтали int...
C++ Программа "Английский словарь"
Привет всем, где-то видел в сети исходник такой програмки на с/с++, может есть у кого - скиньте в личку или дайте пожалуйста ссылку. Суть программы в следующем, в нее можно добавлять английские слова с переводом, и печатать базу слов всем заранее благодарен
C++ чтение из файла, в котором на перенос строки отводится один символ http://www.cyberforum.ru/cpp-beginners/thread33258.html
Здравствуйте. При обработке файлов результатов неких измерений наткнулся на такую проблему: На перенос строки отводится один байт, как в *nix-системах, а не два байта, - как в маздае. пишу я как раз под маздаем. Использую ifstream для чтения из файла. Есть причины, по которым использовать С-шный доступ к файлам мне не выгодно. Вызов tellg для потока выдаёт значение (положение в файле),...
C++ структуры подскажите где ошибки Ребята посмотрите код Пока сделал (думал что сделал) первых 4 пункта но начинает выдавать ошибки посмотрите что за ошибки Предметная область - бухгалтерия предприятия. Решаемые задачи - учет труда и зарплаты работников; табель учета рабочего времени (складывается по подразделам и включает ПИБ работника, должность, количество отработанных часов и количество неробочих дней, за месяц).... подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.05.2009, 23:16     Стандартное определение длины строки в С++
C++
1
sizeof("Я")==3
Внимательно читаем то, что написано жирным:

The ASCII character set defines characters in the range 0x00 – 0x7F. There are a number of other character sets, primarily European, that define the characters within the range 0x00 – 0x7F identically to the ASCII character set and also define an extended character set from 0x80 – 0xFF. Thus an 8-bit, single-byte-character set (SBCS) is sufficient to represent the ASCII character set as well as the character sets for many European languages. However, some non-European character sets, such as Japanese Kanji, include many more characters than can be represented in a single-byte coding scheme, and therefore require multibyte-character set (MBCS) encoding.

Note
Many SBCS routines in the Microsoft run-time library handle multibyte bytes, characters, and strings as appropriate. Many multibyte-character sets define the ASCII character set as a subset. In many multibyte character sets, each character in the range 0x00 – 0x7F is identical to the character that has the same value in the ASCII character set. For example, in both ASCII and MBCS character strings, the one-byte NULL character ('\0') has value 0x00 and indicates the terminating null character.


A multibyte character set may consist of both one-byte and two-byte characters. Thus a multibyte-character string may contain a mixture of single-byte and double-byte characters. A two-byte multibyte character has a lead byte and a trail byte. In a particular multibyte-character set, the lead bytes fall within a certain range, as do the trail bytes. When these ranges overlap, it may be necessary to evaluate the particular context to determine whether a given byte is functioning as a lead byte or a trail byte.

Иными словами в вашем случае
"Я" - является MBCS(не путайте с Unicode) строкой, где символ 'Я' - занимает 2 байта, а символ '0' - один байт.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru