从 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");
}
}
我的 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");
}
}