C++分割字符串并存入数组

问题遇到的现象和发生背景

需要能够输入mac地址,比如11:22:33:44:55:66这种格式,然后我要存进数组中是"0x11"这种格式,数组是unsigne char* 的类型。

我的解答思路和尝试过的方法

我想的是通过": "分割了再存进数组中再加上“0x”,但网上找的分割方法总是报错。

字符串分割的参考代码

#include <iostream>
#include <string>

using namespace std;


int main()
{

    string mac = "11:22:33:44:55";
    string s[10], str;
    int pos, count = 0;
    str = mac;
    do {
        pos = str.find(":");
        if(pos != -1) {
            s[count++] = str.substr(0, pos);
            str = str.substr(pos + 1, str.length());
        }
        else {
            s[count++] = str;
        }
    } while(pos != -1);
    for(int i = 0; i < count; i++) {
        cout << s[i] << endl;
        // 没写保存到unsigned char *数组的模块,根据你的情况再直接取 s 的值保存即可
    }

    return 0;
}

int main()
{
    string str = "11:22:33:44:55:66";
    string rst = "0x";
    unsigned char result[100];
    for (size_t i = 0; i < str.length(); i++)
    {
        rst += str[i];
        if (str[i] == ':')
            rst += "0x";
    }
    strcpy((char *)result, rst.c_str());
    cout << result;
}