将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
Convert std::string to FString (TCHAR / wstring) with special characters
使用虚幻引擎4,我想从机器加载一个文件,其中包含“
、”
、‘
和’
等字符。
所有转换尝试都会导致最终FString
在其位置包含?
,或者根本没有字符。
FString
是UE4的内部字符串类,它使用TCHAR
(wchar_t
(,它使用UTF-16编码。
即使是绝望地尝试使用它也失败了:
std::replace(str.begin(), str.end(), L'“', L'"');
什么也没发生。
如何在std::string
之间正确转换为FString
?
将您的std::string
转换为std::wstring
,因为它也是wchar_t
模板化的,并尝试使用它初始化您的FString
。
如果您不知道如何转换为wstring
,请查看本主题:C ++无法将字符串转换为wstring然后
您可以执行以下操作:FString str = FString(your_wstring.c_str());
或FString str(your_wstring.c_str());
您也可以尝试将数据从文件直接读取到wstring
甚至FString
,因为UE4有自己的类来管理文件,例如FFileHelper
: http://api.unrealengine.com/INT/API/Runtime/Core/Misc/FFileHelper/index.html,我真的会推荐你最后一个选项:-(
您可以将 std::string 转换为 FString,然后像这样记录它。
std::string someString = "Hello!";
FString unrealString(someString .c_str());
UE_LOG(LogTemp, Warning, TEXT("%s"), *unrealString);
然后,您可以在其上执行FString替换功能。 https://docs.unrealengine.com/en-US/API/Runtime/Core/Containers/FString/Replace/index.html
相关文章:
- 检查TCHAR数组输入是否为带符号整数C++
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- 如何在虚幻引擎4中将char*转换为TCHAR?
- 使用什么代替"静态常量 TCHAR *"
- Visual Studio C++:不能使用类型为 "const wchar_t *" 的值来初始化类型为 "TCHAR *" 的实体
- C++ TCHAR* 的文本宏
- 用于从 ANSI 字符串转换为 std::basic_string <TCHAR>的正确函数声明
- 删除unicode def后,无法将QString转换为TCHAR
- 如何将TCHAR转换为常量字符
- 如果使用多字节字符集,为什么TCHAR值会更改
- TCHAR Array to a concatenate LPCSTR
- 将 std::string 转换为 const tchar*
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 正确的交叉平台从 std::string 转换为 'const TCHAR *'
- 使用_tcscpy_s将 CString 复制到 TCHAR*
- 我可以依靠 TCHAR 的定义对我正在使用的字符集做出正确的假设吗?
- MessageBox打印来自TCHAR缓冲区的额外Unicode字符
- 自复制文件到新位置tchar不兼容
- 重新"新"的 TCHAR* 阵列
- TCHAR与LPSTR不兼容