我有一个const char *变量,它可能有一个值,如“OpenStack:OpenStack1”.我想使用strtok来标记这个const char *,其中分隔符(它是一个const char *类型)是“:”.但问题是strtok是以下类型:
char * strtok(char * str,const char * delimiters);
char * strtok(char * str,const char * delimiters);
这意味着我不能使用const char *作为第一个输入,因为它必须是char *.你能说我如何将这个const char *转换成char *?
谢谢.
解决方法
由于strtok实际上写入你的字符串,所以你需要写一个可写的副本来进行标记化;
char* copy = strdup(myReadonlyString); ...tokenize copy... free(copy);