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(即格式字符串方法)。
使用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)