将导入的文本文件读取为字符串
Reading imported text file to string
我有一个项目,我正在使用虚幻引擎4构建,我现在正在本地化字符串;我有每个本地化的JSON形式的文本文件中的所有数据,我已经添加到项目的源。
解决方案资源管理器中的文件结构如下所示:
Games
MyProject (Target)
Source
MyProject
Localization
LOC_ES.txt
...
Accessor.h
Accessor.cpp
我用
将文件添加到那个目录- 右键点击MyProject(第二个项目),点击
- 右键单击本地化过滤器并单击
add -> existing item
- 选择我PC上其他目录下的所有txt文件。
add -> new filter
我不确定,首先,如果这是正确的方式添加文件到一个项目。
我遵循了这篇文章中的说明,但是当我试图运行这段代码时,我从引擎得到了这个错误:
这是我输入的代码。我已经尝试引用文本文件"LOC_ES.txt"answers"Localization/LOC_ES.txt",两者都给我这个错误。UE4Editor.exe中0x00007FFBF1B68B9C第一次机会异常:Microsoft c++ exception: std::length_error at memory location 0x000000C38BB2A0C0.
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中正确添加文件的建议如下:
- 首先,右键单击
LOC_ES.txt
,选择"Remove"。注意不要从文件系统中删除文件。 - 将文件复制到项目中的文件夹中。
- 像之前一样将文件添加为现有项,但现在选择项目文件夹中的文件。
那么您应该使用一个相对文件路径(取决于可执行文件的构建位置)
可能您为流构造函数提供的相对路径与资源文件的位置不匹配。这就是错误消息可能说的:"我找不到流,所以我不能从位置0开始查找。"查看可执行文件所在的构建/调试目标。然后找到从可执行文件到资源的相对路径并使用它。希望这能起作用。
我以c++程序员的身份回答这个问题,但对unreal引擎一无所知。有可能资源文件(Localization/LOC_ES.txt,…)没有复制到结果运行时,即可执行文件的范围。
相关文章:
- 如何使用Luacneneneba API正确读取字符串和表参数
- 如何从二进制文件中读取字符串
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 读取字符串文本输入以创建 2D 矢量
- 罗马数字到阿拉伯语 (vinculum) - 读取字符串中的字符
- C++:从文件中读取字符串和整数,并获得最大数字
- C++,从文件中读取字符串,分段错误
- 如果语句错误地读取字符串,则始终在第一个条件返回
- 如何从内存中读取字符串?
- 如何创建一个C++程序来读取字符串数组中的信息,然后将其排序到类中?
- 我需要C++读取字符串数组中每个单词的第一个字母
- 读取字符串C++的字符时出错
- 读取字符串直到标志 (C++)
- 读取字符串字符时出错 - 对于数组中的字符串值
- C++输入文件流无法从文件中读取字符串
- 读取字符串字符时出错
- 如何读取<字符串,矢量<对<int,字符串的映射>>>
- 如何使此函数使用 getline 读取字符串并使用 int 执行相同的行为?
- C++ 使用 Strtok 读取字符串字符时出错
- 使用 getline 读取字符串,但每行中都有换行符