C++ 如何将字符串s更改为char*a[]?
我想改变C++ 如何将字符串s更改为char*a[]?,c++,C++,我想改变 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)
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("%s\n", 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;
}
#包括“stdafx.h”
#包括
#包括
int _tmain(int argc,_TCHAR*argv[]
{
std::string s=“aaa、bbb、ccc”;
//为字符动态分配内存
char*a=新字符[s.length()+1];
//需要将字符串复制到
std::strcpy(a,s.c_str());
std::cout我建议使用std::vector
来存储结果,而不是char*[]
,它应该更有用
<> >,尝试,纯C++ STD库。< /P>
但是如果您确实需要一个char*[]
,我建议您编写一个转换器函数,
,例如:
char**tocharrays(const std::vector&strings)
{
char**cs=new char*[strings.size()];
for(int i=0,l=strings.size();i
用例如下所示:
std::string input("aaa,bbb,ccc");
std::vector<std::string> strings = Split(input, ',');
char** asCharArrays = ToCharArrays(strings);
YourAPINeedsCharArrays(asCharArrays, strings.size());
delete[] asCharArrays;
std::字符串输入(“aaa、bbb、ccc”);
std::vector strings=Split(输入“,”);
字符**aschararray=tochararray(字符串);
yourapineedscharray(aschararray,strings.size());
删除[]个aschararray;
你不能,编译时需要知道a
的维度。但是我不能确认s的维度。可能s=“aaa,bbb,ccc,ddd,…”所以我希望通过“,”进行切片”检查Boost Tokenizer你能描述一下你想用它完成什么吗?字符串s来自config.ini,我打开config.ini使用字符串s转换成char*a[]={“,”,”}来调用我的函数。我的函数是子数据(a)
std::string input("aaa,bbb,ccc");
std::vector<std::string> strings = Split(input, ',');
char** asCharArrays = ToCharArrays(strings);
YourAPINeedsCharArrays(asCharArrays, strings.size());
delete[] asCharArrays;