FindFirstFile LPCSTR

use*_*707 3 c++ windows string winapi lpcstr

你好,我的代码问题在这里.

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;
}
Run Code Online (Sandbox Code Playgroud)

你传入你想要在GetFiles(LPCSTR路径)中使用的路径然后我使用mergestring函数将路径与扩展(\*.txt)合并在一起所有工作,除非它返回LPCSTR然后它只是很多奇怪的人物,我不知道为什么或这是一个更好的方法来做到这一点?

Mr.*_*C64 5

您的代码不必要地复杂化.如果您只想\*.txt在输入路径字符串中添加后缀,则只需使用std::string其重载即可operator+.

然后,如果要将a传递std::string给具有const char*(ie LPCSTR)参数的Win32 API,则可以使用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;
}
Run Code Online (Sandbox Code Playgroud)

另请注意,在现代世界中,您应该使用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;
}
Run Code Online (Sandbox Code Playgroud)