Как инициализировать структуру с объединением?

Измените число 3 на число 20 ниже, чтобы получить первые 20 слов или передать его как параметр. Ниже показано, как получить первые 3 слова: (поэтому измените значение 3 на 20, чтобы изменить значение по умолчанию):

function first3words($s, $limit=3) {
    return preg_replace('/((\w+\W*){'.($limit-1).'}(\w+))(.*)/', '${1}', $s);   
}

var_dump(first3words("hello yes, world wah ha ha"));  # => "hello yes, world"
var_dump(first3words("hello yes,world wah ha ha"));   # => "hello yes,world"
var_dump(first3words("hello yes world wah ha ha"));   # => "hello yes world"
var_dump(first3words("hello yes world"));  # => "hello yes world"
var_dump(first3words("hello yes world.")); # => "hello yes world"
var_dump(first3words("hello yes"));  # => "hello yes"
var_dump(first3words("hello"));  # => "hello"
var_dump(first3words("a")); # => "a"
var_dump(first3words(""));  # => ""
1
задан user10926577 17 January 2019 в 07:46
поделиться

2 ответа

По какой причине вы хотите использовать союз? Союзы отлично подходят для сохранения памяти. В С ++ редко возникает необходимость их использования. Я знаю, что это не ответ на ваш вопрос, но подумайте, нужно ли вам использовать их в этом проекте.

0
ответ дан Piotr Kurowski 17 January 2019 в 07:46
поделиться

При инициализации объединения будет инициализирован только первый член. Переставьте объединение так, чтобы float real стал первым членом объединения.

Конечно, это означает, что вы не можете использовать других участников в прямой инициализации.

Другое решение заключается в добавлении конструктора в объединение, например, один для члена real, один для члена string и один для члена pointer.

0
ответ дан Some programmer dude 17 January 2019 в 07:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: