给出的是这样的:如何让我得到一个wchar_t的*的最后n个字符
wchar_t filename[] = L"program.exe";
我怎样才能得到最后4个字符,以测试是否与“.EXE”或不是目的?
给出的是这样的:如何让我得到一个wchar_t的*的最后n个字符
wchar_t filename[] = L"program.exe";
我怎样才能得到最后4个字符,以测试是否与“.EXE”或不是目的?
你可以计算出数组的长度与wcslen()
与wcscmp()
比较:
#include <wchar.h>
wchar_t filename[] = L"program.exe";
size_t len = wcslen(filename);
if (len >= 4 && !wcscmp(filename + len - 4, L".exe")) {
/* the extension is .exe */
} else {
/* filename too short or extension not .exe */
}
除非你是针对Windows开发,作为文件扩展名所暗示的,我会强烈建议您从wchar_t
的API远离并在程序中使用UTF-8编码。
我应该用什么来代替wchar_t? – ChaseTheSun
Windows本地使用宽字符API('* W'变体),因此处理'wchar_t *'字符串或等价的'BSTR'/etc。类型。 * * A变体效率不高,在Windows平台上只有'ASCII',所以不能正确处理UTF-8编码字符。 – reece
然后,如果你不能像我一样离开Windows,那么当你需要与操作系统交谈时,将你的程序中愚蠢的'wchar_t'数组转换为UTF-8并返回到'wchar_t'。这只是一个提示,你可以使用'
不要;使用'_wsplitpath_s' https://msdn.microsoft.com/en-us/library/8e46eyt7.aspx –
@Roger我用这个解决方案 – ChaseTheSun
一句警告:文件扩展名大多是没有意义的。它们是实际文件内容中最不可靠的元信息。 – IInspectable