2015-04-28 29 views
0

给出的是这样的:如何让我得到一个wchar_t的*的最后n个字符

wchar_t filename[] = L"program.exe"; 

我怎样才能得到最后4个字符,以测试是否与“.EXE”或不是目的?

+2

不要;使用'_wsplitpath_s' https://msdn.microsoft.com/en-us/library/8e46eyt7.aspx –

+0

@Roger我用这个解决方案 – ChaseTheSun

+1

一句警告:文件扩展名大多是没有意义的。它们是实际文件内容中最不可靠的元信息。 – IInspectable

回答

0

你可以计算出数组的长度与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编码。

+0

我应该用什么来代替wchar_t? – ChaseTheSun

+0

Windows本地使用宽字符API('* W'变体),因此处理'wchar_t *'字符串或等价的'BSTR'/etc。类型。 * * A变体效率不高,在Windows平台上只有'ASCII',所以不能正确处理UTF-8编码字符。 – reece

+0

然后,如果你不能像我一样离开Windows,那么当你需要与操作系统交谈时,将你的程序中愚蠢的'wchar_t'数组转换为UTF-8并返回到'wchar_t'。这只是一个提示,你可以使用''的所有标准功能,但这是一个真正的痛苦。 – chqrlie

相关问题