如何使用Strtok标记Const char *?
我有一个const char *变量,它可能有一个像“OpenStack:OpenStack1”的值。 我想使用strtok来标记化这个const char *,其中分隔符(它是一个const char *类型)是“:”。 但问题是strtok是以下类型:char * strtok(char * str,const char * delimiters);
这意味着我不能使用const char *作为第一个输入,因为它必须是char *。 你能告诉我如何将这个const char *转换为char *吗?
谢谢。
由于strtok实际上写入了你的字符串,你需要制作一个可写的副本来进行标记化;
char* copy = strdup(myReadonlyString); ...tokenize copy... free(copy);
将其声明为数组:
char tokenedStr[] = "OpenStack:OpenStack1";
如果不可能,将其复制到char数组。
您可以复制不可修改的字符串,然后使用strtok
。
您可以移植使用malloc
和strcpy
来复制字符串。