C++:如何从文件中读取多行直到某个字符,将它们存储在数组中并移至文件的下一部分

C++: How to read multiple lines from file until a certain character, store them in array and move on to the next part of the file

我正在为学校做一个刽子手项目,其中一个要求是需要从文本文件中读取绞刑人的图片。我已经设置了一个带有“-”字符的文本文件,这意味着一张图片的结尾和下一张图片的开始。

我设置了这个 for 循环来读取文件直到分隔符并将其存储在一个数组中,但是在测试时我得到的图片不完整,在某些地方被截断了。

这是代码:

string s;
ifstream scenarijos("scenariji.txt");

    for(int i = 0; i < 10; i++ ) {
        getline(scenarijos, s, '-');
        scenariji[i] = s;
    }

郑重声明,scenariji 是一个字符串类型的数组

下面是文本文件的示例: example

从您的示例输入来看,'-' 似乎可以成为输入图像的一部分(看看被吊死的人的“手臂”)。除非您使用其他一些独特的字符来分隔图像,否则您将无法将它们分开。

如果您知道图像的尺寸,则可以通过从输入文件中读取一定数量的字节来读取它们而无需搜索分隔符。或者,您可以为图像终止定义一些更复杂的规则,例如当“-”字符是行中唯一的字符时。例如:

ifstream scenarijos("scenariji.txt");
string scenariji[10];
for (int i = 0; i < 10; ++i) {
    string& scenarij = scenariji[i];

    while (scenarijos.good()) {
        string s;
        getline(scenarijos, s); // read line

        if (!scenarijos.good() || s == "-")
            break;

        scenarij += s;
        scenarij.push_back('\n'); // the trailing newline was removed by getline
    }
}