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

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

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

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

01.02.2012, 12:10. Просмотров 1075. Ответов 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     странный "глюк"
Посмотрите здесь:

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

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

Странный глюк цикла while - C++
Возник весьма странный глюк, связанный с циклом while. Имеется кусок программы: bool = true; while (bo=true){ ...

Странный глюк с биндом - C++
static void deXML(XMLBlock* RootBlock,Node* RN=NULL){ std::list&lt;boost::thread&gt; T; Node* SN=new...

Странный глюк с вектором - C++
Я определил операции: Присвоения: bool s; std::vector&lt;int&gt; v; void operator=(int get_i){ s = get_i &lt; 0; // знак ...

Довольно странный и смешной глюк. (и очень непонятный.) - C++
Появился странный глюк. В точке 1 ввожу текст в структуру при помощи обычного cin. В точке 2 видно, что значение принято. В точке 3,...

Массив "hotel", в который пользователь добавляет "жильцов" - C++
Дорогие форумчане, помогите мне решить проблему в данной программе! Суть программы: Есть массив &quot;hotel&quot;, в который пользователь...

Существуют ли в данной строке s две непересекающиеся подстроки "AB" и "BA" - C++
Здравствуйте, есть задача: Дана строка s. Требуется определить, существуют ли в данной строке s две непересекающиеся подстроки &quot;AB&quot; и...

Процедура, "рисующая" на экране горизонтальную линию из 80 символов "*" - C++
Составить процедуру, &quot;рисующую&quot; на экране горизонтальную из 80 символов &quot;*&quot;

Подсчитать количество символов ".", "?", "!" - C++
#include &lt;iostream&gt; using namespace std; void main(){ char str; int i; cout&lt;&lt;&quot;vvedit text&quot;; cin &gt;&gt; str; for( i = 0; i &lt;str...

Заменить в тексте все пары "ph" на букву "f" - C++
Программа. Напечатать заданный непустой текст, заменив в нем все пары ph на букву f.

Как сделать execl("my", "arg", argv)? - C++
Пытаюсь сделать программу под linux. Нужен такой код, который бы запускал execl с двумя моими параметрами и всеми параметрами из argv кроме...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,909
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
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
01.02.2012, 13:31     странный "глюк" #4
Поддерживаю rangerx.
Зайдите в настройки MSVS, измените кодировку(Если я не ошибаюсь(на работе мак), то нужно multichar поменять).
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 245
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
1927 / 1193 / 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;
}
Но работать не везде будет.
Насколько я знаю, кроссплатформенных способов поддержки юникода в стандартном с++ нету. Ну или реализовано это везде по разному.
Yandex
Объявления
02.02.2012, 13:56     странный "глюк"
Ответ Создать тему
Опции темы

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