20

「OpenStack:OpenStack1」のような値を持つ可能性のあるconstchar*変数があります。区切り文字(const char *タイプ)が ":"であるstrtokを使用して、このconstchar*をトークン化したい。ただし、問題はstrtokのタイプが次のとおりであるということです。char* strtok(char * str、const char * delimiters);

つまり、char *である必要があるため、最初の入力にconstchar*を使用することはできません。このconstchar*を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 に答える