gpt4 book ai didi

c++ - FindFirstFile LPCSTR

转载 作者:可可西里 更新时间:2023-11-01 14:51:34 24 4
gpt4 key购买 nike

你好,我的代码有问题。

LPCSTR mergeString(LPCSTR firstString, std::string secondString)
{
string convertedString = ConvertString(firstString);
LPCSTR mergedString;
int i = convertedString.size();

convertedString.insert(i, secondString);
mergedString = (convertedString.c_str());

return mergedString;
}

void GetFiles(LPCSTR path)
{
WIN32_FIND_DATA File_Data;
LPCSTR lPath = mergeString(path,"\\*.txt");
FindFirstFile(lPath, &File_Data);
wcout << File_Data.cFileName;
}

你在 GetFiles(LPCSTR 路径) 中传入你想要使用的路径然后我使用 mergestring 函数将路径与扩展名 (\*.txt) 合并在一起,除了当它返回 LPCSTR 然后它只是很多奇怪的角色,我不知道为什么或者这是更好的方法吗?

最佳答案

您的代码不必要复杂。如果您只想向输入路径字符串添加一个 \*.txt 后缀,您可以简单地使用 std::string 及其重载的 operator+.

然后,如果您想将 std::string 传递给具有 const char* 的 Win32 API(即 LPCSTR)参数,可以使用std::string::c_str()方法:

void GetFiles(LPCSTR path)
{
WIN32_FIND_DATA fileData;
std::string searchPath(path);
searchPath += "\\*.txt";

FindFirstFile(searchPath.c_str(), &fileData);
wcout << fileData.cFileName;
}

另请注意,在现代世界中,您应该使用 Unicode (UTF-16) 进行 Win32 编程;所以 const wchar_t*std::wstring 是比 const char*std::string 更好的选择。此外,我只使用 std::wstring 类作为参数,而不是原始的 wchar_t 指针。

void GetFiles(const std::wstring& path)
{
std::wstring searchPath = path + L"\\*.txt";
WIN32_FIND_DATA fileData;
FindFirstFile(searchPath.c_str(), &fileData);
std::wcout << fileData.cFileName;
}

关于c++ - FindFirstFile LPCSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13311889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com