Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用Strtok标记常量字符*?_C++_C_Strtok - Fatal编程技术网

C++ 如何使用Strtok标记常量字符*?

C++ 如何使用Strtok标记常量字符*?,c++,c,strtok,C++,C,Strtok,我有一个const char*变量,它的值可能类似于“OpenStack:OpenStack1”。我想使用strtok标记这个常量字符*,其中分隔符(属于常量字符*类型)是“:”。但问题是strtok属于以下类型: char*strtok(char*str,const char*分隔符) 这意味着我不能对第一个输入使用const char*,因为它必须是char*。你能告诉我如何把这个常量字符*转换成字符* 谢谢。您可以复制不可修改的字符串,然后使用strtok 您可以便携使用malloc和st

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

这意味着我不能对第一个输入使用const char*,因为它必须是char*。你能告诉我如何把这个常量字符*转换成字符*


谢谢。

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


您可以便携使用
malloc
strcpy
复制字符串。

将其声明为数组:

char tokenedStr[] = "OpenStack:OpenStack1";

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

因为strtok实际上会写入您的字符串,所以您需要制作一个可写副本来标记它

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

收到了吗?你是说我应该从那个页面拷贝吗?不,我是说你应该用描述的函数复制字符串。YUP,SPOT。我做了SAM.HysC++的复制方法是:代码> STD::向量拷贝(MyRealDyLyString,MyRealDyLyStry+StrLLN(MyRead on String));代码>。然后可以标记化
copy->data()
。每当副本超出范围时,编译器将自动取消分配它。@Manuel,您存储在
copy
中的值不是以null结尾的。使用strlen(myReadonlyString)+1确保输入的终止符包含在向量中。