将导入的文本文件读取为字符串

Reading imported text file to string

本文关键字:读取 字符串 文件 文本 导入      更新时间:2023-10-16

我有一个项目,我正在使用虚幻引擎4构建,我现在正在本地化字符串;我有每个本地化的JSON形式的文本文件中的所有数据,我已经添加到项目的源。

解决方案资源管理器中的文件结构如下所示:

Games
    MyProject (Target)
        Source
            MyProject
                Localization
                    LOC_ES.txt
                    ...
                Accessor.h
                Accessor.cpp

我用

将文件添加到那个目录
    右键点击MyProject(第二个项目),点击add -> new filter
  1. 右键单击本地化过滤器并单击add -> existing item
  2. 选择我PC上其他目录下的所有txt文件。

我不确定,首先,如果这是正确的方式添加文件到一个项目。


我遵循了这篇文章中的说明,但是当我试图运行这段代码时,我从引擎得到了这个错误:

UE4Editor.exe中0x00007FFBF1B68B9C第一次机会异常:Microsoft c++ exception: std::length_error at memory location 0x000000C38BB2A0C0.

这是我输入的代码。我已经尝试引用文本文件"LOC_ES.txt"answers"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中正确添加文件的建议如下:

  • 首先,右键单击LOC_ES.txt,选择"Remove"。注意不要从文件系统中删除文件。
  • 将文件复制到项目中的文件夹中。
  • 像之前一样将文件添加为现有项,但现在选择项目文件夹中的文件。

那么您应该使用一个相对文件路径(取决于可执行文件的构建位置)

可能您为流构造函数提供的相对路径与资源文件的位置不匹配。这就是错误消息可能说的:"我找不到流,所以我不能从位置0开始查找。"查看可执行文件所在的构建/调试目标。然后找到从可执行文件到资源的相对路径并使用它。希望这能起作用。

我以c++程序员的身份回答这个问题,但对unreal引擎一无所知。有可能资源文件(Localization/LOC_ES.txt,…)没有复制到结果运行时,即可执行文件的范围。