LINUX.ORG.RU

Инициализация std::vector<std::vector<wchar_t>>

 , ,


0

1

Сейчас получается нечто вроде:

_win_rear[id][ttl][temp]=
	{
		 {L'M',L'╦',L'╥',L'6'}
		,{L'N',L'║',L'П',L'║'}
		,{L'║',L'Z',L'║',L'║'}
		,{L'2',L'╩',L'╨',L'А'}
	};
Хотелось бы как-то избавиться от L.
Там более что массивы могут довольно большими.
Почему не просто строки? Потому что мне нужно иметь простой и удобный способ адресации каждой литеры.

★★☆

Последнее исправление: CYB3R (всего исправлений: 1)

Потому что мне нужно иметь простой и удобный способ адресации каждой литеры.

ну и почему не std::wstring?

anonymous
()
Ответ на: комментарий от anonymous

Х.м. А х.з.
Это вроде тоже с wchar_t.
Надо провести эксперимент.

Stahl ★★☆
() автор топика
Ответ на: комментарий от anonymous

так тсу вроже нужно было избавиться от L возле каждой литеры, std::wstring позволит оставить только одну. Или я его не так понял.

anonymous
()
Ответ на: комментарий от anonymous

Надеюсь только это не приведёт к неведомой фигне при обращении к отдельным литерам.

Stahl ★★☆
() автор топика
Ответ на: комментарий от Stahl

блин, ты лучшеб показал, чегно ты ожидаешь. Если типа такого

vec[0][0], то не приведет. std::wstring это тупой std::basic_string (как вон другой анонимус сказал), а это просто контейнер, который теперь, с С++11, гарантирует «последовательное хранение данных литерного типа».

ps: пипец туь капчи наркомановские сегодня «mariju mushrooms»

anonymous
()
Ответ на: комментарий от anonymous

marijuana mushrooms?
Это что-то новенькое:)
Да, [0][0] мне будет достаточно для счастья.

Stahl ★★☆
() автор топика
Ответ на: комментарий от anonymous

ps: пипец туь капчи наркомановские сегодня «mariju mushrooms»

засуши! мне одни цифери попадаются.

anonymous
()

а насамом деле тебе тут вектор строк вообще нахер не уперся

можно так:

enum { HEIGHT = 5, WIDTH = 5 };

...
    const wchar_t data[HEIGHT * WIDTH + 1] =
            L"12345"
            L"abcde"
            L"ABCDE"
            L"67890"
            L"zxcvb"
            ;
....
/// get [n][m]

data[n * WIDTH + m];

anonymous
()
Ответ на: комментарий от Stahl

Ну так и почему не подойдет один std::vector<wchar_t>? Или строки разной длины?

andreyu ★★★★★
()

если не хочешь L, можешь цифровые константы соответствующие использовать, типа 0xABCDE

Или генерировать код для массивов в процессе сборки

Harald ★★★★★
()

Там более что массивы могут довольно большими.

Вынеси всё это в конфиг и при запуске загружай в вектор. Автоматически избавишься от L.

invy ★★★★★
()
Ответ на: комментарий от Stahl

Хардкодить ещё хуже. Весело будет, если какой-то упырь умудрится сохранить твой исходник в другой кодировке с непредсказуемым результатом.

От конфига, содержащего твой массив, можно потребовать utf-16 и всё. Открываешь, читаешь BOM, есть? Читаешь дальше свой массив. Нету? Выдаёшь ошибку юзеру о том, что он своими шалавливыми руками полез куда лезть не надо.

invy ★★★★★
()

Хотелось бы как-то избавиться от L. Там более что массивы могут довольно большими.

выкинь это говно, и сделай текстовый файл в utf-8.

Потому что мне нужно иметь простой и удобный способ адресации каждой литеры.

ты что-то делаешь не так.

emulek
()
Ответ на: комментарий от Harald

цифровые константы соответствующие использовать, типа 0xABCDE

This. Строго говоря, не факт, что можно вообще использовать в исходнике любую Юникод-кодировку. Используя ASCII, сложно будет сохранить файл не в той кодировке, ничего не заметив.

ilammy ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.