如何将字符串s更改为char * a[]
How to change string s to char * a[]?
我想转换
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;