Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将字符串s更改为char*a[]?_C++ - Fatal编程技术网

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;