>>> 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
Документация:
Следующее, что вам нужно сделать, это разделить ваш ввод с помощью дельтиметра (в вашем случае ',') на вектор и затем объединить все с префиксами и посфиксами. C ++ не поддерживает разбиение по умолчанию, вам придется проявить творческий подход или искать решение, подобное здесь .
Если вы хотите сохранить простоту, вы можете определять границы слов, проверяя два символа за раз. Вот рабочий пример .
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.