Я попробовал, с регулярными выражениями . Я реализовал это для ints и const-строк в качестве примера, но вы можете добавить любые другие типы ( POD , но с помощью указателей вы можете печатать что угодно).
#include
#include
#include
#include
#include
static std::string
formatArg(std::string argDescr, va_list args) {
std::stringstream ss;
if (argDescr == "i") {
int val = va_arg(args, int);
ss << val;
return ss.str();
}
if (argDescr == "s") {
const char *val = va_arg(args, const char*);
ss << val;
return ss.str();
}
assert(0); //Not implemented
}
std::string format(std::string fmt, ...) {
std::string result(fmt);
va_list args;
va_start(args, fmt);
std::regex e("\\{([^\\{\\}]+)\\}");
std::smatch m;
while (std::regex_search(fmt, m, e)) {
std::string formattedArg = formatArg(m[1].str(), args);
fmt.replace(m.position(), m.length(), formattedArg);
}
va_end(args);
return fmt;
}
Вот пример использования этого:
std::string formatted = format("I am {s} and I have {i} cats", "bob", 3);
std::cout << formatted << std::endl;
Вывод:
Я Боб, и у меня есть 3 кошки
Доверие не установлено на удаленной машине, и ваш локальный .hgrc влияет только на пользователей на локальной машине. Поместите строку раздела доверия в свой удаленный .hgrc (в вашем домашнем каталоге на машине, где находится удаленный репозиторий). Это, конечно, предполагает, что вы используете удаленные URL-адреса ssh: //. Если вы используете URL-адреса «http: //» для доступа к репозиторию, то это .hgrc пользователя apache (или wwwuser или другого пользователя) на удаленном компьютере, которому необходимо подтвердить доверие.