20

我有一个 const char* 变量,它的值可能类似于“OpenStack:OpenStack1”。我想使用 strtok 标记这个 const char* ,其中分隔符(它是 const char* 类型)是 ":" 。但问题是 strtok 属于以下类型: char * strtok ( char * str, const char * delimiters );

这意味着我不能将 const char* 用于第一个输入,因为它必须是 char*。你能告诉我如何将这个 const char* 转换为 char* 吗?

谢谢你。

4

3 回答 3

23

由于 strtok 实际上会写入您的字符串,因此您需要对其进行可写副本以进行标记;

char* copy = strdup(myReadonlyString);
...tokenize copy...
free(copy);
于 2012-04-23T13:43:17.113 回答
2

将其声明为数组:

char tokenedStr[] = "OpenStack:OpenStack1";

如果不可能,请将其复制到 char 数组中。

于 2012-04-23T13:42:42.957 回答
0

您可以复制不可修改的字符串,然后使用strtok.

您可以便携地使用mallocstrcpy复制字符串。

于 2012-04-23T13:41:47.003 回答