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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
#1

странный "глюк" - C++

01.02.2012, 12:10. Просмотров 1108. Ответов 5
Метки нет (Все метки)

при опредедении следующего символьного массива:
C++
1
char с[6] = "abcde";
ошибки нет. Всё понятно. Пять символов, плюс символ окончания строки '\0'

а при
C++
1
char с[6] = "абвгд";
редактор Visual Studio 2010 Express edition подчёркивает как ошибку
C++
1
"абвгд"
и пишет: "Error:значение типа "const char[11]" нельзя использовать для инициализации сущности типа "char[6]"

Но сама программа работает без ошибок.

Это глюки обработчика ошибок, или я что-то не так прописал???

Вот код:
C++
1
2
3
4
5
6
7
#include <iostream>
int main()
{
char b[6] = "abcde"; 
char с[6] = "абвгд"; 
return 0;
}
А как у вас??? (Если вы тоже работаете в Visual Studio 2010 Express)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2012, 12:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос странный "глюк" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Странный ответ ="-1.#IND" что такое? - C++
Нахожу сумму по формуле S=∑_(i=0)^10▒〖(-1)〗^(i+1)/i! Ответ не однозначный... помогите в чем ошибка? // applicationB-task2-zadacha3.cpp:...

мужики , какая функция отвечает за "глюк" раб.стола? - C++
скинул себе программу &quot;прикол&quot;, а там есть такая менюшка глюк экрана, поле установки которой текст становится неразборчив. ну вот как...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
01.02.2012, 12:38 #2
Скорее всего в качестве кодировки текстового редактора у вас выставлен юникод. В UTF-8 символы с номерами меньше 128 кодируются 1 байтом, а символы кириллицы двумя. Т.е.
C++
1
char с[6] = "абвгд"; // 5 * 2 + 1 = 11
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.02.2012, 13:31 #3
rangerx, http://codepad.org/tQza9yA3
Не знаю как в студии, а вообще так нельзя. Смотри http://liveworkspace.org/code/5a15ea...26cb7e93892c1d Необходима перекодировка.
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
01.02.2012, 13:31 #4
Поддерживаю rangerx.
Зайдите в настройки MSVS, измените кодировку(Если я не ошибаюсь(на работе мак), то нужно multichar поменять).
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
02.02.2012, 10:00  [ТС] #5
Спасибо всем. Но ведь программа работает без замечаний и вывода ошибок! Зачем тогда менять в настройках MSVS кодировки? Где это может проявиться? Ведь и стандартный вывод нормально делает, если предусмотреть включение нужной кодировки программно setlocale(0,"");
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main()
{
    setlocale(0,"");
char b[6] = "abcde"; 
char c[6] = "абвгд"; 
cout << b;
cout << c;
return 0;
}
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.02.2012, 13:56 #6
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <wchar.h>
#include <locale>
 
int main()
{
    std::locale::global( std::locale("") );
    wchar_t str[6] = L"абвгд";
    std::wcout << str;
}
Но работать не везде будет.
Насколько я знаю, кроссплатформенных способов поддержки юникода в стандартном с++ нету. Ну или реализовано это везде по разному.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2012, 13:56
Привет! Вот еще темы с ответами:

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...

по строкам.замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно - C++
замените в слове сочетание &quot;му&quot; на &quot;а&quot; , а букву &quot;ы&quot; на &quot;ца&quot;. очень нужно Добавлено через 21 час 4 минуты неужели никто не знает...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.02.2012, 13:56
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru