2015-04-28 28 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

相關問題