例えば:
ifstream input;
input.open("file.txt");
translateStream(input, cout);
input.close();
関数 translateStream の書き方
void translateStream(XXXX input, YYYY output)
? 入力と出力の型は何ですか?
ありがとう
std::istream
とstd::ostream
、それぞれ:
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 の回答は完全に正しく合理的ですが、(少なくとも) 考慮に値する別の可能性が 1 つあります。行っていることの種類によっては、イテレータを使用してストリームを参照する価値がある場合があります。この場合、実際の文字変換を処理するために作成するファンクターを使用して、translate
おそらく になります。std::transform
たとえば、1 つのファイル内のすべての文字を大文字に変換し、それらを別のファイルに書き込みたい場合は、次のようにすることができます。
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;
}
これは、あなたが尋ねたとおりの質問に完全には適合しませんが、とにかく価値のある手法になる可能性があります.