如何使用Strtok标记Const char *?

时间:2012-04-23 13:40:37

标签: c++ c strtok

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

这意味着我不能将const char *用作第一个输入,因为它必须是char *。你能告诉我怎么把这个const char *转换成char *?

谢谢。

3 个答案:

答案 0 :(得分:18)

由于strtok实际写入了你的字符串,你需要制作一个可写的副本来进行标记化;

char* copy = strdup(myReadonlyString);
...tokenize copy...
free(copy);

答案 1 :(得分:1)

将其声明为数组:

char tokenedStr[] = "OpenStack:OpenStack1";

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

答案 2 :(得分:0)

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

您可以移植mallocstrcpy来复制字符串。