C++ Code Snippet -- 字符串转换操作

180 阅读1分钟

String -> unsigend char *

unsigned char * mes = (unsigned char *) (str.c_str());

unsigned char * 到 String

unsigned char mes[60] = "";
std::string str = (char*)mes;

vector<unsigned char> 到 unsigned char *

std::vector<unsigned char> plainFile = fileData;
// 转换成 unsigned char*
reinterpret_cast<char*>(plainFile.data())

char类型的拼接

char* str1 = "Hello";
char*str2 = "World";
//方式一
char str3[20];
strcpy(str3, str1);
strcat(str3, str2);
cout << str3 << endl;
//方式二
//char str3[20];
sprintf(str3,"%s%s",str1,str2);
cout << str3 << endl;

16进制转换

// 输入16进制字符串 "0XEC"
unsigned char getNumber(std::string hexNumStr) {

    int x;
    stringstream ss;
    ss << std::hex << hexNumStr;
    ss >> x;
    S_LOGI("number = %d", x);
    return (unsigned char) x;

}

字符串拆分

/**
* 字符串拆分
* @param src 待分割字符串
* @param sep 分隔符
* @param ans 生成的集合
*/
void StringUtils::split(const std::string &src, const std::string &sep, std::vector<std::string> &ans) {

    std::string str = src;
    int nPos = 0;
    nPos = str.find(sep);
    while(-1 != nPos)
    {
        std::string temp = str.substr(0, nPos);
        ans.push_back(temp);
        str = str.substr(nPos+1);
        nPos = str.find(sep);
    }
    ans.push_back(str);

}

时间戳格式转换成年月日时分秒

/**
* 将秒转成 2023/08/23/09/47  /年/月/日/时/分 目录结构
*/
std::string StringUtils::timestamp2Dir(long timestamp) {
    char now[64];
    time_t tt = timestamp;
    struct tm tTime{};
    localtime_r(&tt, &tTime);
    strftime(now, 64, "%Y/%m/%d/%H/%M", &tTime);
    return {now};
}