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

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

Войти
Регистрация
Восстановить пароль
 
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 93
#1

Linux: initializer-string for array of chars is too long - C++

12.11.2013, 08:15. Просмотров 603. Ответов 8
Метки нет (Все метки)

Возникла серьезная проблема:
создаю массив с текстом:

C++
1
2
3
4
5
6
const char text[][7] = {
    "Текст1",
    "Текст2",
    "Текст3",
    "Текст4"
};
А при компиляции выводит сообщение: initializer-string for array of chars is too long

Если я увеличу кол-во ячеек в массиве, но на выходе, вместо букв будут 'крякозябры', и их будет больше, чем букв в тексте одной из ячеек этого массива.

как исправить данную проблему?

(Использую Linux mint 14, компилю через терминал)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 08:15     Linux: initializer-string for array of chars is too long
Посмотрите здесь:

Ошибка "string for array of chars is too long" - C++
const int Width = 12; const int Height = 10; char Mounth = {"Январь", "Февраль", "Март",...

Перевод из String в long long - C++
Мне нужна функция для перевода из String в long long.Функция atoi(const char* str) работает только с констатным масивом символов а мне...

Инициализация массива: ошибка "array must be initialized with a brace-enclosed initializer" - C++
Вот собственно сама ошибка: "array must be initialized with a brace-enclosed initializer" Сама программа должна выводить квадрат в...

Перевод long double в string - C++
Дана задача http://www.cyberforum.ru/attachment.php?attachmentid=97778&stc=1&d=1317238135 Я не понимаю как конвертировать...

Преобразование string в long double - C++
Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для денежных значений, такого, как $173 698 001,32. ...

Преобразование long double в string - C++
Здравствуйте уважаемые форум чане! Будьте так добры, подскажите выход из сложившейся ситуации!Как преобразовать числовое значение допустим...

При переводе string в long double теряется дробная часть - C++
Помогите с программой. При переводе string в long double дробная часть становится равной нулю(не зависит от длины числа). #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 09:27     Linux: initializer-string for array of chars is too long #2
Цитата Сообщение от Slava_ Посмотреть сообщение
Возникла серьезная проблема:
создаю массив с текстом:

C++
1
2
3
4
5
6
const char text[][7] = {
    "Текст1",
    "Текст2",
    "Текст3",
    "Текст4"
};
А при компиляции выводит сообщение: initializer-string for array of chars is too long

Если я увеличу кол-во ячеек в массиве, но на выходе, вместо букв будут 'крякозябры', и их будет больше, чем букв в тексте одной из ячеек этого массива.

как исправить данную проблему?

(Использую Linux mint 14, компилю через терминал)
C++
#include <iostream>
using namespace std;
 
const wchar_t text [][7] = {
  { L"Текст1" },
  { L"Текст2" } ,
  { L"Текст3" },
  { L"Текст4" }
} ;
 
int main() {
 
  wcout << text[1] << endl;
 
}
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 93
12.11.2013, 10:12  [ТС]     Linux: initializer-string for array of chars is too long #3
Прикол в том, что раньше не было такого, у меня есть и другие .cpp файлы в которых имеется русский текст, там все хорошо. Но текст там в виде закорючек (не знаю названия кодировки) перевожу текст в такую же - эффекта никакого.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 10:18     Linux: initializer-string for array of chars is too long #4
Slava_, может быть надо сменить кодировку терминала?
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 93
12.11.2013, 10:29  [ТС]     Linux: initializer-string for array of chars is too long #5
Стоит Юникод (UTF-8)
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 10:40     Linux: initializer-string for array of chars is too long #6
Цитата Сообщение от Slava_ Посмотреть сообщение
Стоит Юникод (UTF-8)
попробуйте другие или в самой программе поменяйте локаль:
Почему не выводит текст из файла (CP1251)?
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 93
12.11.2013, 10:47  [ТС]     Linux: initializer-string for array of chars is too long #7
Установка этих 'крякозябров' происходит непосредственно при компилировании, вот почему ругается на длину, хотя текст в исходниках нормальный.

В терминале устанавливал разные кодировки, все равно та же ошибка.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 11:10     Linux: initializer-string for array of chars is too long #8
Slava_, а сам исходник в какой кодировке?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 14:24     Linux: initializer-string for array of chars is too long
Еще ссылки по теме:

Std::vector для Array of String - C++
Нужно поместить append первым элементом пустую Array of String. Как-нибудь по-умному это делается? :)

Ошибка char-array initialized from wide string - C++
Доброго времени суток! Вот программы, которые были выложены, одна на сайте среди уроков-примеров, другая же выложена на форуме. В обоих...

Создать объединение, что содержит элементы типов char int short fload long string - C++
всем доброго времени суток! мне нужно создать объединение, что содержит элементы типов char int short fload long string. создать массив...

Написать программу учёта абитуриентов, описав типы Array и String - C++
Доброго времени суток. Программа должна выводить данные абитуриентов (ФИО ID, самый распространённый балл, средний балл) в зависимости от...

Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего - C++
Создайте класс employee, который содержит имя (объект класса string) и но- мер (типа long) служащего. Включите в него метод getdata(),...


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

Или воспользуйтесь поиском по форуму:
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 93
12.11.2013, 14:24  [ТС]     Linux: initializer-string for array of chars is too long #9
То же UTF-8

Добавлено через 58 минут
Менял кодировку файла, ошибка не исчезла.

Добавлено через 1 час 55 минут
Исправил проблему поставил кодировку ANSI и переписал текст вручную, после чего все заработало.
Yandex
Объявления
12.11.2013, 14:24     Linux: initializer-string for array of chars is too long
Ответ Создать тему
Опции темы

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