如何从文本文件中填充指针数组?

1 c++ text-files

我正在开展一个今天到期的学校项目,而且我遇到了一个可能很简单的问题.

我需要让游戏成为"Hangman",而我所坚持的任务是从文本文件中填充一系列指针(我需要阅读图片以获取错误的答案).

void ReadScenes(string *scenes[10])
 {
ifstream inFile("Scenes.txt");
if (inFile.is_open())
{
    int i = 0;
    string scene;
    while ((inFile >> scene)&&(i<10))
    {
        *scenes[i] = scene;
            i++;        
    }
}
}
int main()
{
  char *scenes[10];
  ReadScenes(scenes);
}
Run Code Online (Sandbox Code Playgroud)

我的文本文件如下所示:

char *scene1 =
    "                      \n"
    "                      \n"
    "                      \n"
    "                      \n"
    "                      \n"
    "                      \n"
    "       *              \n"
    "      * *             \n"
    "     *   *            \n";


char *scene2 =
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "      * *             \n"
    "     *   *            \n";
Run Code Online (Sandbox Code Playgroud)

等等.

方法中的代码用于读取密码,因为它们是用空格分隔的.所以我有10个场景,我想将它们保存在数组中.

Som*_*ude 6

一个问题是,您认为您阅读的文件应该是C++ - 类似于具有变量声明的文件.这不是它的工作原理.

您应该将文件的内容放入普通的C++源文件中并使用它进行构建.

就像是

std::string scenes[] = {
    // Scene 1
    "                      \n"
    "                      \n"
    "                      \n"
    "                      \n"
    "                      \n"
    "                      \n"
    "       *              \n"
    "      * *             \n"
    "     *   *            \n",

    // Scene 2
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "       *              \n"
    "      * *             \n"
    "     *   *            \n",

    // And so on...
};
Run Code Online (Sandbox Code Playgroud)

如果使用IDE,请将源文件添加到项目中.

如果你使用例如g++在命令行上构建那么

g++ -Wall main.cpp scenes.cpp -o my_program
Run Code Online (Sandbox Code Playgroud)

scenes.cpp包含scenes数组的源文件在哪里.


如果您需要使用外部文本文件,而不需要任何C++代码,那么它实际上非常简单:只需按原样存储文本,不带引号或任何类似于C++声明或语句的内容.

由于您知道每个"场景"恰好是九行(并且可能是一个额外的行来分隔两个场景),因此您可以使用for循环来读取该行.

所以你的文本文件可能看起来像







           *              
          * *             
         *   *            

           *              
           *              
           *              
           *              
           *              
           *              
           *              
          * *             
         *   *            

然后加载它

constexpr size_t NUMBER_OF_SCENES = 2;  // With the example scene file in this answer
constexpr size_t LINES_PER_SCENE = 9;

std::ifstream scene_file("scenes.txt");

std::array<std::string, NUMBER_OF_SCENES> scenes;

// Loop to read all scenes
for (std::string& scene : scenes)
{
    std::string line;

    // Loop to read all lines for a single scene
    for (unsigned line_number = 0; line_number < LINES_PER_SCENE && std::getline(scene_file, line); ++line_number)
    {
        // Add line to the current scene
        scene += line + '\n';
    }

    // Read the empty line between scenes
    // Don't care about errors here
    std::getline(scene_file, line);
}
Run Code Online (Sandbox Code Playgroud)