fin.txt
#include <iostream>
#include <fstream>
using namespace std;
// 将默认参数设置为:cin, 从键盘读入使用 newLine(),从文件读入使用 newLine(fin)
void newLine(istream& in_stream = cin);
int main() {
ifstream fin;
cout << "Enter a number:\n";
int number;
cin >> number;
cout << "Now enter a letter:\n"; char symbol;
newLine(fin);
cin.get(symbol);
cout << symbol;
}
void newLine(istream& in_stream) {
char dis;
do {
in_stream.get(dis);
} while (dis != '\n');
}
IO.cpp
/*
##
u
v
i }
v }
Enter a number:
45
Now enter a letter:
q
q
*/
#include <iostream>
#include <fstream>
using namespace std;
void newLine(istream& in_stream);
int main() {
ifstream fin;
fin.open("/Users/br/Documents/C:C++/character/character/fin.txt");
if (fin.fail()) {
cout << "fin file opening failed.";
exit(EXIT_FAILURE);
}
char c;
while (! fin.eof()) {
fin.get(c);
cout.put(c);
if (c != '\n')
newLine(fin);
}
cout << "\nEnter a number:\n";
int number;
cin >> number;
cout << "Now enter a letter:\n";
char symbol;
newLine();
cin.get(symbol);
cout << symbol;
fin.close();
return 0;
}
// 注意此处为 istream
void newLine(istream& in_stream) {
char dis;
do {
in_stream.get(dis);
} while (dis != '\n' && dis != '\0');
/* 不加条件 dis != '\0' 时, 在键盘输入的情况下没有任何问题,
* 但在 I/O stream 文件下如果,文件的末尾没有回车符号的话会导致程序一直向下读取进入死循环。
* /
}