給出的是這樣的:如何讓我得到一個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