- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直致力于使用 FindFirstFile 和 FindNextFile 反向搜索目录的系统,但我遇到了一个我不明白的问题。
下面是一段代码。
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine
,int nCmdShow)
{
searchDrive((LPCTSTR)"C:\\",(LPCTSTR)"*.bdjf");
return 0;
}
bool searchDrive(LPCTSTR lpFolder, LPCTSTR lpFilePattern)
{
TCHAR szFullPattern[MAX_PATH];
WIN32_FIND_DATA FindFileData;
HANDLE hFile = INVALID_HANDLE_VALUE;
PathCombine(szFullPattern, lpFolder, L"x");
MessageBox(NULL,szFullPattern,lpFilePattern,MB_ICONWARNING |
MB_CANCELTRYCONTINUE |
MB_DEFBUTTON2);
HANDLE hFind = FindFirstFile(szFullPattern, &FindFileData);
我正在使用 Visual Studio 2008。
可以看到除了最后一个字符和'\'看不到,其余的都是亚洲字符。
(注意不要担心我的代码的任何其他问题。)
任何关于为什么会发生这种情况的想法都将不胜感激。
最佳答案
这是你的问题:
searchDrive((LPCTSTR)"C:\\",(LPCTSTR)"*.bdjf");
默认情况下,Visual Studio 以 Unicode 模式编译程序。因此,您将两个“ANSI”(8 位字符)字符串都转换为“Unicode”(16 位字符)字符串类型。
这不会转换字符串。它只是告诉编译器假装它们一直都是 Unicode 字符串。这行不通也就不足为奇了。结果是每对 ANSI 字符都被视为单个 Unicode 字符。
您可以这样解决问题:
searchDrive(TEXT("C:\\"), TEXT("*.bdjf"));
但是除非你有特定的理由支持ANSI模式,否则还是用
searchDrive(L"C:\\", L"*.bdjf");
并更改 searchDrive
的声明以使用 LPCWSTR
而不是 LPCTSTR
。
关于c++ - LPCTSTR 的非常奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22888996/
我正在尝试在 MFC 应用程序中使用 listbox.Addstring();,它将采用 LPCTSTR。我正在传递一个长度为 33 个字符的 char 数组变量。 ListBox.AddString
This question is unlikely to help any future visitors; it is only relevant to a small geographic are
我一直致力于使用 FindFirstFile 和 FindNextFile 反向搜索目录的系统,但我遇到了一个我不明白的问题。 下面是一段代码。 int WINAPI WinMain(HINSTANC
我可以知道如何执行以下转换吗? // el.strCap is char[50] // InsertItem is expecting TCHAR pointer (LPCTSTR) // How I
如何将数字附加到 LPCTSTR?我正在使用的库采用 LPCTSTR 作为 com 端口地址。我知道如何使用 char* 执行此操作,但不知道如何使用 LPCTSTR。这就是我想要做的(假设 spri
我正在为一个 WindowsCE CAB 文件实现一个自定义操作,我需要连接一个 LPCTSTR 以获得一个正确的 exe 路径。 我的自定义操作接收一个 LPCTSTR 作为参数。 所以(伪代码):
我有这样的函数,它接受可变数量的参数和构造 字符串并将其传递给另一个函数以打印日志。 logverbose( const char * format, ... ) { char buffer[1024
LPCTSTR applicationName = NUL // NULL => module name from command line string argument1 = "something
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: C++ std::string conversion problem on Windows How to c
我在编写代码时遇到了问题。我使用一个函数,该函数将类型为 LPCSTR 的参数对象作为参数对象。对象声明如下所示:LPCTSTR lp文件名;首先,我使用定义的变量,它被进一步分配给 lpFileNa
如何获取 LPCTSTR 的子字符串? 最佳答案 LPCSTR只是 char * 的花哨名称,它没有方法。 如果您使用 std::string 您可以使用 find 和 substr 方法来提取字符串
我有一个需要 LPCTSTR 的类。 当我打电话时: 新 CFileImageLoader(_T("Splash02.png"))或者 新的 CFileImageLoader("Splash02.pn
// Convert to a wchar_t* size_t origsize = strlen(toChar) + 1; const size_t newsize = 100; size_t co
我正在尝试再写第二行,但我不知道该使用哪个代码。 我尝试过使用\r\n、\n、\r 等,但他们都没有工作。 感谢所有帮助过的人! :) 这是我的代码的一部分。(我也包括了标题。) HINSTANCE
我正在使用 visual studio 2010 MFC 构建 C++ 程序。我的程序调用了一个不属于项目的 DLL,它接受一个 char*。我有一个函数可以获取 LPCTSTR 格式的字符串。我现在
我正在尝试将一些文本放入静态文本小部件中,如下所示: m_StartupTime.SetWindowText(someStringVariable); 并得到一个错误: 'CWnd::SetWindo
我创建了一个 md5 哈希器,它接受一个文件并返回哈希值。 我使用“hFind = FindFirstFile(dir, &data)”来列出目录中的文件。 为了将这些文件的路径传递给我的哈希函数,我
这个问题在这里已经有了答案: What does LPCWSTR stand for and how should it be handled? (3 个答案) 关闭 9 年前。 我在理解和让它正常
也许任何人都可以向我解释一下: bool Func1(LPCTSTR sData) { if (sData) { ... } } 我这样调用函数: CString str = _T("");
我想使用 LoadLibrary 开发一个插件系统。 我的问题是:我希望我的函数采用 const char* 而 LoadLibrary 采用 LPCTSTR。 我有一个聪明的想法来做(LPCSTR)
我是一名优秀的程序员,十分优秀!