如何将 const std::filesystem::directory_entry 转换为 tchar?
How to convert const std::filesystem::directory_entry to tchar?
我正在尝试将 const std::filesystem::directory_entry (dirent) 转换为 tchar,但我不明白它是如何完成的。我尝试了很多方法。你能帮助我吗?
已编辑:
#include "pch.h"
#include <memory>
#include <filesystem>
#include <algorithm>
#include <iostream>
#include <tchar.h>
#include <string.h>
typedef wchar_t WCHAR;
namespace fs = std::filesystem;
int main() try
{
std::for_each(fs::recursive_directory_iterator("./foo/"), {},
[](fs::directory_entry const& dirent)
{
if (fs::is_regular_file(dirent) &&
dirent.path().filename() == "black.txt")
{
std::wstring = path.wstring();
}
});
}
catch (fs::filesystem_error const& e)
{
std::cerr << "error: " << e.what() << '\n';
}
您可以使用 these functions 将 std::filesystem::path
转换为任何形式:
std::string string() const;
std::wstring wstring() const;
std::u16string u16string() const;
std::u32string u32string() const;
TCHAR
有点像评论中提到的遗物,你最好使用上述任何一种替代方法。
如果您要将它传递给 Win32 API 函数,我会建议您明确使用 wstring
而根本不用担心变形 TCHAR
。
您的代码应该是这样的:
if (fs::is_regular_file(dirent) &&
dirent.path().filename() == "black.txt")
{
std::wstring path_as_string = path.wstring();
}
没有 TCHAR
,没有 C 风格的数组,没有 C 风格的内存复制。
我正在尝试将 const std::filesystem::directory_entry (dirent) 转换为 tchar,但我不明白它是如何完成的。我尝试了很多方法。你能帮助我吗?
已编辑:
#include "pch.h"
#include <memory>
#include <filesystem>
#include <algorithm>
#include <iostream>
#include <tchar.h>
#include <string.h>
typedef wchar_t WCHAR;
namespace fs = std::filesystem;
int main() try
{
std::for_each(fs::recursive_directory_iterator("./foo/"), {},
[](fs::directory_entry const& dirent)
{
if (fs::is_regular_file(dirent) &&
dirent.path().filename() == "black.txt")
{
std::wstring = path.wstring();
}
});
}
catch (fs::filesystem_error const& e)
{
std::cerr << "error: " << e.what() << '\n';
}
您可以使用 these functions 将 std::filesystem::path
转换为任何形式:
std::string string() const;
std::wstring wstring() const;
std::u16string u16string() const;
std::u32string u32string() const;
TCHAR
有点像评论中提到的遗物,你最好使用上述任何一种替代方法。
如果您要将它传递给 Win32 API 函数,我会建议您明确使用 wstring
而根本不用担心变形 TCHAR
。
您的代码应该是这样的:
if (fs::is_regular_file(dirent) &&
dirent.path().filename() == "black.txt")
{
std::wstring path_as_string = path.wstring();
}
没有 TCHAR
,没有 C 风格的数组,没有 C 风格的内存复制。