Извините, если это разрешено через Google - я ничего не нашел.Как легко уничтожить массивы char на C++?
char foo[4] = "abcd";
недопустим в C++ (из-за необходимости '\ 0'), но IIRC действительный в C - это правильно?
У меня есть набор структур с большим количеством полей символов «фиксированной длины», которые должны быть пустыми, а не «\ 0» завершены. Я хотел бы быть в состоянии сделать обычный вид инициализации структуры - вы знаете
mystruct bar = {17, "abcd", 0x18, "widget ", ...
Но я не могу сделать это в C++. Одним из решений, я думаю, было бы поместить все инициализированные структуры, подобные этому, в их собственный исходный модуль C (не ++). Уродливым, трудоемким решением, которое я пытаюсь избежать, является
mystruct bar = {17, {'a', 'b', 'c', 'd'}, 0x18, {'w', 'i', 'd', 'g', 'e', 't', ' ', ' '}, ...
Есть ли хорошее решение на С ++? Умный макрос, который эффективно позволяет «abcd» быть char [4] без терминатора '\ 0'?
Спасибо, Чарльз
@juanchopanza [C++ является более строгим на этом] (http://stackoverflow.com/a/20694830/1708801) –
Почему бы не 'std :: string'? –
Не должно быть char foo [5] = "abcd"; в вашем примере? –