Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.11.2013, 08:15. Просмотров 649. Ответов 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, компилю через терминал)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 08:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Linux: initializer-string for array of chars is too long (C++):

Ошибка "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" Сама программа должна выводить квадрат в...

Не понятный undefined reference to `unsigned long long f<unsigned long long, void> - C++
test.cpp: #include &lt;iostream&gt; template &lt;typename FormalType, typename FactType = typename std::enable_if&lt;std::is_same&lt;FormalType,...

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

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

8
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 09:27 #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;
 
}
0
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
12.11.2013, 10:12  [ТС] #3
Прикол в том, что раньше не было такого, у меня есть и другие .cpp файлы в которых имеется русский текст, там все хорошо. Но текст там в виде закорючек (не знаю названия кодировки) перевожу текст в такую же - эффекта никакого.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 10:18 #4
Slava_, может быть надо сменить кодировку терминала?
0
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
12.11.2013, 10:29  [ТС] #5
Стоит Юникод (UTF-8)
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 10:40 #6
Цитата Сообщение от Slava_ Посмотреть сообщение
Стоит Юникод (UTF-8)
попробуйте другие или в самой программе поменяйте локаль:
Почему не выводит текст из файла (CP1251)?
0
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
12.11.2013, 10:47  [ТС] #7
Установка этих 'крякозябров' происходит непосредственно при компилировании, вот почему ругается на длину, хотя текст в исходниках нормальный.

В терминале устанавливал разные кодировки, все равно та же ошибка.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2013, 11:10 #8
Slava_, а сам исходник в какой кодировке?
1
Slava_
4 / 4 / 1
Регистрация: 27.02.2013
Сообщений: 94
12.11.2013, 14:24  [ТС] #9
То же UTF-8

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

Добавлено через 1 час 55 минут
Исправил проблему поставил кодировку ANSI и переписал текст вручную, после чего все заработало.
1
12.11.2013, 14:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 14:24
Привет! Вот еще темы с ответами:

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

Excess elements in array initializer - C (СИ)
int arr={{000,0,0},{001,0,0},{010,0,0},{011,0,0},{100,0,0},{101,0,0},{110,0,0},{111,0,0}}; В чем проблема? нумерация ведь с нуля...

Инициализация массива структур: Array initializers can only be used in a variable or field initializer - C#
В С++ можно создать массив стркутур и тут же ее проинициализировать: struct AmplPalette { double Ampl; ...

Incompatible types: 'array of string' and 'Dynamic array' - Delphi
Добрый день! В процессе написания программы столкнулся с ошибкой: Unit1.pas(77): E2010 Incompatible types: 'array of string' and...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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