如何获得最后一个strtok?

mar*_*zzz 0 c++ string split strtok

我想拆分一个“字符串”(分隔符\)以获得最后一次出现。是我写的代码:

char str[] ="D:\\Google Drive\\My Files\\Test.zip";
char * buffer = str;

sprintf(buffer, "%s", strtok(str,"\\"));
cout << buffer;
Run Code Online (Sandbox Code Playgroud)

但它返回D:而不是Test.zip(第一次出现,而不是最后一次)。你会怎么做这个任务?

我需要使用/保持 sprintf(即格式字符串方法)。

Pau*_*l R 5

使用strrchr代替 - 在这种情况下更合适,并且具有非破坏性和可重入性:

char str[] ="D:\\Google Drive\\My Files\\Test.zip";
char * buffer = strrchr(str, '\\');
cout << buffer + 1;
Run Code Online (Sandbox Code Playgroud)

如果您确实必须sprintf按照您的问题保留冗余和低效的使用,那么您当然可以这样做:

char str[] ="D:\\Google Drive\\My Files\\Test.zip";
char buffer[256];
sprintf(buffer, "%s", strrchr(str, '\\') + 1);
cout << buffer;
Run Code Online (Sandbox Code Playgroud)

LIVE DEMO