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然后它只是很多奇怪的人物,我不知道为什么或这是一个更好的方法来做到这一点?
您的代码不必要地复杂化.如果您只想\*.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)
| 归档时间: |
|
| 查看次数: |
3347 次 |
| 最近记录: |