【CPP】随手记

发布时间:2023年12月19日

1. 随机数

#include <chrono>
#include <random>

/// @brief 生成随机数
/// @details 生成的随机数范围[@param min, @param max]
/// @tparam[in] T 随机数的数据类型
/// @param[in] _max 随机数的最大值(闭区间)
/// @param[in] _min 随机数的最小值(闭区间)
/// @return 随机数
template <class T>
T GenRand(T _max, T _min = 0) {
  static_assert(std::is_integral<T>::value || std::is_floating_point<T>::value, "T must be an integral or float type");
  std::default_random_engine       e(std::chrono::system_clock::now().time_since_epoch().count());
  std::uniform_int_distribution<T> u(_min, _max);
  return u(e);
}

2. 获取应用程序文件名

#include <string>

std::string GetAppName(int argc, char *argv[]) {
  std::string            fullName(argv[0]);
  std::string::size_type pos = fullName.find_last_of('/');
  if (pos == std::string::npos) {
    pos = fullName.find_last_of('\\');
    if (pos == std::string::npos) {
      return nullptr;
    }
  }

  return fullName.substr(pos + 1);
}

3. 字符串分割

#include <regex>

std::vector<std::string> stringSplit(const std::string &str, char delim) {
  std::string              s(1, delim);
  std::regex               reg(s);
  std::vector<std::string> elems(std::sregex_token_iterator(str.begin(), str.end(), reg, -1),
                                 std::sregex_token_iterator());
  return elems;
}
文章来源:https://blog.csdn.net/zhy29563/article/details/135095516
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。