Python: разбиение слов в текстовом файле на ограниченные 40 символов и заполнение дополнительного слота & ldquo; rdquo; с пробелами

Здесь много правильных ответов, но я хотел добавить это (для полноты):

Если вы в нижней части файла cpp реализации выполняете явное инстанцирование всех типов, которые будут использоваться шаблоном с, компоновщик сможет найти их как обычно.

Изменить: добавление примера явного создания экземпляра шаблона. Используется после того, как шаблон определен, и определены все функции-члены.

template class vector<int>;

Это создаст экземпляр (и, следовательно, сделает доступным для компоновщика) класс и все его функции-члены (только). Подобный синтаксис работает для функций шаблона, поэтому, если у вас есть перегрузки операторов, не являющихся членами, вам может понадобиться сделать то же самое для них.

Вышеприведенный пример бесполезен, поскольку вектор полностью определен в заголовках, за исключением случаев, когда common include file (precompiled header?) использует extern template class vector<int>, чтобы не создавать его из всех других (1000?) файлов, которые используют вектор.

1
задан Syah 3 March 2019 в 16:47
поделиться

1 ответ

Добавить следующее:

def pad(line, limit):
    return line + " " * (limit-len(line))

def split_string (text, limit, sep= " "):

    words = text.split()
    if max(map(len,words)) > limit:
        raise ValueError("limit is too small")
    res = []
    part = words[0]
    others = words[1:]
    for word in others:
        if len(sep)+len(word) > limit-len(part):
            res.append(part)
            part = word

        else:
            part +=sep+word

    if part:
        res.append(part)

    result = [pad(l, limit) for l in res]
    return result
0
ответ дан user1854182 3 March 2019 в 16:47
поделиться