【发布时间】:2021-12-17 07:37:30
【问题描述】:
请您指教,为什么内部循环只运行一次? 我想为输入文件的每一行添加后缀,然后将结果存储在输出文件中。
谢谢
例如: 输入文件包含:
AA
AB
AC
后缀文件包含:
_1
_2
输出文件应包含:
AA_1
AB_1
AC_1
AA_2
AB_2
AC_2
我的结果是:
AA_1
AB_1
AC_1
代码:
int main()
{
string line_in{};
string line_suf{};
string line_out{};
ifstream inFile{};
ofstream outFile{"outfile.txt"};
ifstream suffix{};
inFile.open("combined_test.txt");
suffix.open("suffixes.txt");
if (!inFile.is_open() && !suffix.is_open()) {
perror("Error open");
exit(EXIT_FAILURE);
}
while (getline(suffix, line_suf)) {
while (getline(inFile, line_in))
{
line_out = line_in + line_suf;
outFile << line_out << endl;
}
inFile.close();
outFile.close();
}
}
【问题讨论】:
-
getline(inFile, line_in)应该读多少次换行? -
如果
inFile在外循环的第一次迭代结束时关闭,那么下一次迭代有什么要读的?使用seekg倒带文件似乎是一个更好的主意。 -
@Drew Dormann - getline(inFile, line_in) 应该读取 2* 3 = 6 次。第一个循环中有 2 个条目,内部循环中有 3 行:后缀:_1 _2 inFile:AA AB AC 结果:AA_1 AB_1 AC_1 AA_2 AB_2 AC_2
-
提示:一个文件需要反复倒带。请注意在倒带之前清除所有标志。
标签: c++ while-loop console std getline