从 wchar_t* 中获取最后一个标记

Get the last token out of wchar_t*

我的 C 代码中有一个 wchar_t*,其中包含以下格式的 URL:

https://example.com/test/...../abcde12345

我想用斜杠分割它,只得到最后一个标记(在那个例子中,我想得到一个新的 wchar_t* 包含“abcde12345”)。

我该怎么做?

谢谢?

只需使用std::wstring

int main()
{
    std::wstring input = L"https://example.com/test/...../abcde12345";

    auto separatorPos = input.rfind(L'/');
    if (separatorPos == std::wstring::npos)
    {
        std::cout << "separator not found\n";
    }
    else
    {
        auto suffix = input.substr(separatorPos + 1);
        std::wcout << suffix << L'\n';
    }

    return 0;
}

在 C 中,您可以使用 wcsrchr 查找最后一次出现的 /:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
int main(void){
  wchar_t *some_string = L"abc/def/ghi";

  wchar_t *last_token = NULL;
  wchar_t *temp = wcsrchr(some_string, L'/');
  if(temp){
    temp++;
    last_token = malloc((wcslen(temp) + 1) * sizeof(wchar_t));
    wcscpy(last_token, temp);
  }

  if(last_token){
    wprintf(L"Last token: %s", last_token);
  }else{
    wprintf(L"No / found");
  }
}