例如:
ifstream input;
input.open("file.txt");
translateStream(input, cout);
input.close();
如何编写translateStream函数?
void translateStream(XXXX input, YYYY output)
?
输入和输出的类型是什么?
由于
答案 0 :(得分:8)
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";
}
}
答案 1 :(得分:1)
虽然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;
}
这与你提出的问题完全不符合问题,但无论如何它都是值得的技术。