попросить текст для редактирования, форматирование текста

>>> import datetime
>>> # replace datetime.datetime.now() with your datetime object
>>> int(datetime.datetime.now().strftime("%s")) * 1000 
1312908481000

Или помощь модуля времени (и без форматирования даты):

>>> import datetime, time
>>> # replace datetime.datetime.now() with your datetime object
>>> time.mktime(datetime.datetime.now().timetuple()) * 1000
1312908681000.0

Ответил с помощью: http://pleac.sourceforge.net/pleac_python/ dateandtimes.html

Документация:

1
задан Tom 16 January 2019 в 13:26
поделиться

2 ответа

Следующее, что вам нужно сделать, это разделить ваш ввод с помощью дельтиметра (в вашем случае ',') на вектор и затем объединить все с префиксами и посфиксами. C ++ не поддерживает разбиение по умолчанию, вам придется проявить творческий подход или искать решение, подобное здесь .

0
ответ дан Phins 16 January 2019 в 13:26
поделиться

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

using namespace std;

#include <iostream>
#include <string>

#include <cctype>

typedef enum boundary_type_e {
    E_BOUNDARY_TYPE_ERROR = -1,
    E_BOUNDARY_TYPE_NONE,
    E_BOUNDARY_TYPE_LEFT,
    E_BOUNDARY_TYPE_RIGHT,
} boundary_type_t;

typedef struct boundary_s {
    boundary_type_t type;
    int pos;
} boundary_t;

bool is_word_char(int c) {
    return ' ' <= c && c <= '~' && !isspace(c) && c != ',';
}

boundary_t maybe_word_boundary(string str, int pos) {
    int len = str.length();
    if (pos < 0 || pos >= len) {
        return (boundary_t){.type = E_BOUNDARY_TYPE_ERROR};
    } else {
        if (pos == 0 && is_word_char(str[pos])) {
            // if the first character is word-y, we have a left boundary at the beginning
            return (boundary_t){.type = E_BOUNDARY_TYPE_LEFT, .pos = pos};
        } else if (pos == len - 1 && is_word_char(str[pos])) {
            // if the last character is word-y, we have a right boundary left of the null terminator
            return (boundary_t){.type = E_BOUNDARY_TYPE_RIGHT, .pos = pos + 1};
        } else if (!is_word_char(str[pos]) && is_word_char(str[pos + 1])) {
            // if we have a delimiter followed by a word char, we have a left boundary left of the word char
            return (boundary_t){.type = E_BOUNDARY_TYPE_LEFT, .pos = pos + 1};
        } else if (is_word_char(str[pos]) && !is_word_char(str[pos + 1])) {
            // if we have a word char followed by a delimiter, we have a right boundary right of the word char
            return (boundary_t){.type = E_BOUNDARY_TYPE_RIGHT, .pos = pos + 1};
        }
        return (boundary_t){.type = E_BOUNDARY_TYPE_NONE};
    }
}

int main() {
    string str;
    string ins_left("<tag>");
    string ins_right("</tag>");
    getline(cin, str);

    // can't use length for the loop condition without recalculating it all the time
    for (int i = 0; str[i] != '\0'; i++) {
        boundary_t boundary = maybe_word_boundary(str, i);
        if (boundary.type == E_BOUNDARY_TYPE_LEFT) {
            str.insert(boundary.pos, ins_left);
            i += ins_left.length();
        } else if (boundary.type == E_BOUNDARY_TYPE_RIGHT) {
            str.insert(boundary.pos, ins_right);
            i += ins_right.length();
        }
    }
}

Было бы лучше использовать enum class, но я забыл обозначения. Вы также можете скопировать в буфер вместо генерации новой строки на месте, я просто пытался сохранить ее простотой. Не стесняйтесь расширять его до стиля C ++, основанного на классах. Чтобы получить желаемый результат, сначала удалите пробелы и добавьте пробелы в ins_left и ins_right.

0
ответ дан okovko 16 January 2019 в 13:26
поделиться
Другие вопросы по тегам:

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