2013-03-27 2 views
-1

Итак, мой массив выглядит следующим образом:Печать из строки из массива строк 2D

string links[26][4]; 
links[0][0] = 'A'; 
links[0][1] = 'WOL-LA-CHEE'; 

И если я пытаюсь напечатать, скажем, 'WOL-LA-CHEE', как это:

соиЬ < < ссылки [0] [1]

мой результат выглядит следующим образом:

E

Что я делаю неправильно?

+0

'' WOL-LA-CHEE'' является многоканальным литералом. Вам нужен строковый литерал. – chris

ответ

2

Поместите строку в двойные кавычки. "WOL-LA-CHEE". Одиночные кавычки объявляют константу символа, значение которой в этом случае не указано.

5

Если вы поместили текст между одинарными кавычками, это обозначает буквенный символ. Поскольку существуют конструкторы копирования для std::string от char и const char *, это работает для одного символа, но не делает то, что, по вашему мнению, делает для нескольких символов. Скорее всего, вы хотите поставить строки в двойные кавычки:

links[0][1] = "WOL-LA-CHEE"; 

Stuff to read about multicharacter literals.

+0

Спасибо, это сработало. – paradajz

2

'WOL-LA-CHEE' является multicharacter буквальным. Он имеет значение, определяемое реализацией, и является int. Кажется, что вы хотите строковый литерал вместо:

links[0][0] = "A"; 
links[0][1] = "WOL-LA-CHEE"; 

Назначения 'A' работал ранее, потому что это нормальная литера и имеет типа char. std::string имеет перегрузку operator=, что принимает char.

Смежные вопросы