代码拉取完成,页面将自动刷新
同步操作将从 gite-hub/libicon 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#pragma once
#include <string>
#include <sstream>
#include <stdarg.h>
#include <vector>
namespace cc
{
// 转 字符串
template <typename T>
inline std::string toString(T arg)
{
std::stringstream string_stream;
string_stream << arg;
return string_stream.str();
}
}
// 字符串 格式化
inline std::string toString(const char* format, ...)
{
const int c1024 = 1024;
char* arr = (char*)malloc(c1024);
memset(arr, 0, c1024);
va_list ap;
va_start(ap, format);
#if 1
vsnprintf_s(arr, c1024, c1024, format, ap);
#else
int count = _vsnprintf(arr, (c1024) - 1, format, ap);
if (count >= 0)
{
arr[count] = 0;
}
else
{
arr[c1024 - 1] = 0;
}
#endif
va_end(ap);
std::string str(arr);
free(arr);
return str;
}
namespace cc
{
// 字符串 分割
inline void split(const std::string &str, const std::string &delim, std::vector<std::string>& ret)
{
ret.clear();
size_t last = 0;
size_t index = str.find_first_of(delim, last);
if (index == std::string::npos)
{
ret.push_back(str);
return;
}
while (index != std::string::npos)
{
ret.push_back(str.substr(last, index - last));
last = index + 1;
index = str.find_first_of(delim, last);
}
if (index - last > 0)
{
ret.push_back(str.substr(last, index - last));
}
}
// 字符串 替换
inline std::string replace(std::string str, const std::string &to_replace, const std::string &replace)
{
std::string::size_type pos = 0;
std::string::size_type srcLen = to_replace.size();
std::string::size_type desLen = replace.size();
pos = str.find(to_replace, pos);
while ((pos != std::string::npos))
{
str.replace(pos, srcLen, replace);
pos = str.find(to_replace, (pos + desLen));
}
return str;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。