我正在尝试读取一个文件并将这些行放入一个数组中,然后使用文件中的行数和我将这些行放入的顺序以相同的顺序将其读回。但问题是我不知道数组文件的大小。有没有什么方法可以临时存储数据并按照我放入的相同顺序读回数据?怎么样?
答案 0 :(得分:2)
在实践中,您将使用向量,以便可以将从文件中提取的内容添加到容器中,而无需任何有关大小的先决条件。但是,另一个选项包括将std::getline
与计数器一起使用:
int count = 0;
for (; std::getline(file, line); ++count);
答案 1 :(得分:0)
不要费心找出你认为该文件的大小:
只需将线条读入合适的容器即可。如果您担心重新定位内容,请使用std::deque<std::string>
:它不会重新定位其内容。
std::deque<std::string> lines;
for (std::string line; std::getline(file, line); ) {
lines.push_back(line);
}
答案 2 :(得分:0)
如果您正在尝试创建一个字符串数组,每个字符串都是一行,请将其读取两次。第一次,计算线。如果您的文件因任何原因可能异步更改,或者它不可搜索,请在完成后将您阅读的每个字符输入sstream
。然后,您知道所需阵列的大小。将您的流搜索为0(如果您没有将其复制到sstream
)并从开头填充数组开始。
如果您只需要知道文件在字符中有多大,fstream
就有gcount
方法。
或者,使用适当的容器,如vector
,将根据需要进行扩展。