例如:
ifstream input;
input.open("file.txt");
translateStream(input, cout);
input.close();
如何编写函数 translateStream?
void translateStream(XXXX input, YYYY output)
? 输入输出的类型有哪些?
谢谢
void translateStream(std::istream& pIn, std::ostream& pOut);
例子:
void translateStream(std::istream& pIn, std::ostream& pOut)
{
// line for line "translation"
std::string s;
while (std::getline(pIn, s))
{
pOut << s << "\n";
}
}
虽然 GMan 的回答是完全正确和合理的,但(至少)还有另一种可能性值得考虑。根据您正在做的事情,使用迭代器来引用流可能是值得的。在这种情况下,您translate
可能会std::transform
使用您编写的函子来处理实际的字符翻译。例如,如果您想将一个文件中的所有字母转换为大写字母,并将它们写入另一个文件,您可以执行以下操作:
struct tr {
char operator()(char input) { return toupper((unsigned char)input); }
};
int main() {
std::ifstream input("file.txt");
input.skipws(false);
std::transform(std::ifstream_iterator<char>(input),
std::ifstream_iterator<char>(),
std::ostream_iterator<char>(std::cout, ""),
tr());
return 0;
}
这并不完全符合您提出的问题,但无论如何它可能是一种有价值的技术。