【发布时间】:2017-10-27 18:31:23
【问题描述】:
我想使用 strtok() 函数来解析字符串,并且我想在返回的标记中创建值的副本(因为我收集到从该函数返回的标记是指针)。
本质上,我的目标是创建一个指向字符串数组的指针,该数组保存每个标记地址处的值的副本。到目前为止,我的代码尝试(并且失败)如下:(另外我希望令牌能够为三个字符保存足够的空间)。
(注意,我对更改拆分字符串的方法不感兴趣 - 我知道 strtok 有缺点)
char words[] = "red, dry, wet, gut"; // this is the input string
char* words_split[100];
char token[3]; // creates space for a token to hold up to 3 characters (?)
int count = 0;
char* k = strtok(words, ","); // the naming of k here is arbitrary
while (k != NULL) {
k = strtok(NULL, ",");
token[0] = *k; // I'm aware the 0 here is wrong, but I don't know what it should be
words_split[count] = token;
count++;
}
然后我希望能够从 words_split 访问每个单独的元素,即红色。
【问题讨论】:
-
最好不要使用
strtok()在c++中分割字符串。 -
至于你的问题:你需要使用
strncpy()来复制token值。 -
@user0042 是的,我知道这可能不是最好的方法。你能解释一下我将如何使用 strncpy() 吗?就像我将它放在代码中的哪个位置一样?
-
@user0042 我想我理解这个函数是如何工作的,但我真的很困惑它与指针的关系——以及将它放在代码中的什么位置?比如,while 循环后半部分的内容是否正确?
标签: c++ arrays string pointers strtok