解决使用{freopen与 getline}读取不同文件时产生的的问题
读取单一文件
使用 freopen重定向。
用 getline逐行读取,处理。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
int main()
{
freopen("text1.in", "r", stdin);
while (getline(cin, s)) {
/* - code - */
}
fclose(stdin);
return 0;
}
读取多个文件
基本方法同上。
特别注意:在读取完一个文件后,
使用 cin.clear()清空输入流。
否则除第一个文件,其他文件无读入。
正确示例:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
int main()
{
freopen("text1.in", "r", stdin);
while (getline(cin, s)) {
/* - code - */
}
fclose(stdin);
cin.clear();
freopen("text2.in", "r", stdin);
while(getline(cin, s)) {
/* - code - */
}
fclose(stdin);
// ...
return 0;
}