如何将字符串s更改为char * a[]

How to change string s to char * a[]?

本文关键字:char 字符串      更新时间:2023-10-16

我想转换

string s="aaa,bbb,ccc"

为:

char * a[]={"aaa", "bbb", "ccc"}

你能告诉我如何编写程序来处理这个过程吗?

我将尝试这样编程:

string s="aaa,bbb,ccc";
char * a[];
char id[] = "";
strcpy(id, s.c_str());
const char * split = ",";
char * p;
    p = strtok(id, split);
    while (p != NULL) {
        int i = 0;
        printf("%sn", p);
        a[i]=p;
        i++;
        p = strtok(NULL, split);
    }

哪里是我的错?谁能指出来?

我是编程新手,但我一直在做以下事情:

#include "stdafx.h"
#include <stdio.h>
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{       
    std::string s = "aaa,bbb,ccc";
    // dynamically allocate memory for the char
    char * a = new char [s.length()+1];
    // the string needs to be copied into a
    std::strcpy(a, s.c_str());
    std::cout << a;
    // cleanup
    delete [] a;
    return 0;
}

编辑:刚刚注意到你想要字符串的不同部分作为字符数组的元素,我的答案不这样做。

我建议使用std::vector<std::string>来存储您的结果而不是char* [],它应该更有用。

那么,试试这个,纯c++ std库。

但是如果你确实需要一个char* [],我建议写一个转换器函数,,如:

char** ToCharArrays(const std::vector<std::string>& strings)
{
    char** cs = new char* [strings.size()];
    for (int i = 0, l = strings.size(); i < l; ++i)
    {
        cs[i] = const_cast<char*>(strings[i].c_str());
    }
    return cs;
}

用例如下:

std::string input("aaa,bbb,ccc");
std::vector<std::string> strings = Split(input, ',');
char** asCharArrays = ToCharArrays(strings);
YourAPINeedsCharArrays(asCharArrays, strings.size());
delete[] asCharArrays;