C++ C++;函数将字符串解析为标记

C++ C++;函数将字符串解析为标记,c++,arrays,string,parsing,pointers,C++,Arrays,String,Parsing,Pointers,我正在尝试构建一个函数,该函数接受一个c字符串和一个指向字符指针数组的指针,并应返回在将每个标记放入指向字符指针的指针数组时找到的标记数。例如,如果我传入字符串ls-l文件,它应该放入一个c字符串数组,每个字符串都在一行中(args[1]=“I\0”、args[2]=“am\0”、args[3]=“the\0”、args[4]=“test\0”、args[5]=“string\0”)。谢谢你的帮助 以下是我到目前为止的情况,但我遇到了内存访问冲突: #include <iostream&g

我正在尝试构建一个函数,该函数接受一个c字符串和一个指向字符指针数组的指针,并应返回在将每个标记放入指向字符指针的指针数组时找到的标记数。例如,如果我传入字符串
ls-l文件
,它应该放入一个c字符串数组,每个字符串都在一行中(
args[1]=“I\0”、args[2]=“am\0”、args[3]=“the\0”、args[4]=“test\0”、args[5]=“string\0”
)。谢谢你的帮助

以下是我到目前为止的情况,但我遇到了内存访问冲突:

#include <iostream>
using namespace std;

int MakeArg(char [], char** []);

int main()
{
    char str[] = "I am the test string";
    char** argv;
    int argc;

    argc = MakeArg(str, &argv);

    cin.ignore();
    cout << "\nPress enter to quit.";
    cin.ignore();

    return 0;
}

int MakeArg(char s[], char** args[])
{
    int word = 1;   

    for (int i = 0; s[i] != '\0'; i++) //iterates through every character in s
    {
        *args[word][i] = s[i]; //adds each character to word
        if (s[i] == ' ') //when a space is found
        {
            *args[word][i] = '\0'; //it replaces it with a nullbyte in args
            word++; //and moves on to the next word
        }
    }

    return word; //returns number of words
}
#包括
使用名称空间std;
int MakeArg(char[],char**[]);
int main()
{
char str[]=“我是测试字符串”;
字符**argv;
int-argc;
argc=MakeArg(str和argv);
cin.ignore();

CUT <代码> ARGV 未初始化。除此之外,考虑使用<代码> STD::vector < /代码>和<代码> <代码>…更重要的是,<代码> STD::String < /Cord> >检查此示例