【发布时间】:2015-07-30 22:59:48
【问题描述】:
我有一个正在使用虚幻引擎 4 构建的项目,我现在开始本地化字符串;我在已添加到项目源的文本文件中以 JSON 形式保存了每个本地化的所有数据。
我的解决方案资源管理器中的文件结构如下所示:
Games
MyProject (Target)
Source
MyProject
Localization
LOC_ES.txt
...
Accessor.h
Accessor.cpp
我通过
将文件添加到该目录- 右键单击MyProject(第二个)并单击
add -> new filter - 右键单击本地化过滤器并单击
add -> existing item - 从我的 PC 上的某个其他目录中选择所有 txt 文件。
首先我不确定这是否是向项目添加文件的正确方法。
我按照this post 中的说明进行操作,但是当我尝试运行此代码时,引擎出现此错误:
UE4Editor.exe 中 0x00007FFBF1B68B9C 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000C38BB2A0C0 处的 std::length_error。
这是我输入的代码。我尝试使用“LOC_ES.txt”和“Localization/LOC_ES.txt”引用文本文件,都给我这个错误。
std::ifstream t(TCHAR_TO_UTF8(*("Localization/LOC_" + locale + ".txt")));
std::string str;
t.seekg(0, std::ios::end);
str.reserve(t.tellg());
t.seekg(0, std::ios::beg);
str.assign((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
这个文件的实际内容只是 JSON。这是摘录。
{
"Single Player": "Solo Jugador",
"Multiplayer": "Multijugador",
"Options": "Opciones",
"Exit": "Dejar",
"Back": "Volver",
"Normal": "Normal",
"Hard": "Duro",
"Brutal": "Extremo"
}
我以前从未以这种方式读取文件,所以我不确定到底是什么问题。
【问题讨论】:
-
您是否调试过代码以查看异常实际发生的位置?
-
我不完全确定如何使用 Visual Studio 和 Unreal Engine 做到这一点。
-
在
std::ifstream t的声明处设置断点。为此,请单击文本编辑器的左边框(或者将光标移动到声明并从菜单栏中选择 Debug -> Toggle Breakpoint)。然后在菜单栏中选择 Debug -> Start Debugging。 -
@TobiMcNamobi 好的,所以我确定问题出在文件路径上。如果我使用系统上文件的绝对文件路径,它可以正常工作,但我需要将文件视为资源,以便它不依赖于我系统的文件系统结构。如何将文件直接添加到项目并访问它,这样我就不必使用实际的
C:\path\to\file.txt -
顺便说一句,西班牙语翻译不好;)
标签: c++ file-io unreal-engine4