如何获得最后一个strtok?
How to get the last strtok?
我想拆分一个 "string"(定界符 \
)以获得最后一次出现。 This是我写的代码:
char str[] ="D:\Google Drive\My Files\Test.zip";
char * buffer = str;
sprintf(buffer, "%s", strtok(str,"\"));
cout << buffer;
但它 returns D:
而不是 Test.zip
(第一次出现,而不是最后一次)。你会如何完成这个任务?
我需要 use/keep sprintf(即格式字符串近似)。
改用 strrchr - 在这种情况下它更合适,而且既非破坏性又可重入:
char str[] ="D:\Google Drive\My Files\Test.zip";
char * buffer = strrchr(str, '\');
cout << buffer + 1;
如果您确实必须根据您的问题保留对 sprintf
的冗余和低效使用,那么您当然可以这样做:
char str[] ="D:\Google Drive\My Files\Test.zip";
char buffer[256];
sprintf(buffer, "%s", strrchr(str, '\') + 1);
cout << buffer;
我想拆分一个 "string"(定界符 \
)以获得最后一次出现。 This是我写的代码:
char str[] ="D:\Google Drive\My Files\Test.zip";
char * buffer = str;
sprintf(buffer, "%s", strtok(str,"\"));
cout << buffer;
但它 returns D:
而不是 Test.zip
(第一次出现,而不是最后一次)。你会如何完成这个任务?
我需要 use/keep sprintf(即格式字符串近似)。
改用 strrchr - 在这种情况下它更合适,而且既非破坏性又可重入:
char str[] ="D:\Google Drive\My Files\Test.zip";
char * buffer = strrchr(str, '\');
cout << buffer + 1;
如果您确实必须根据您的问题保留对 sprintf
的冗余和低效使用,那么您当然可以这样做:
char str[] ="D:\Google Drive\My Files\Test.zip";
char buffer[256];
sprintf(buffer, "%s", strrchr(str, '\') + 1);
cout << buffer;