c++ - C ++:如何从文件中读取多行直到某个字符,将它们存储在数组中并移动到文件的下一部分
问题描述
我正在为学校做一个刽子手项目,其中一个要求是它需要从文本文件中读取刽子手的图片。我已经设置了一个带有“-”字符的文本文件,这意味着一张图片的结尾和下一张图片的开始。
我设置了这个 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
}
}