Хотя ответ 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;
}
Это не совсем подходит с вопросом именно так, как вам - спросил он, но в любом случае это может быть полезная техника.
Не забудьте выполнить тест после считывания. Преобразован, чтобы сделать цикл while корректным. –
К сожалению, спасибо, плохая привычка. Вы также добавили новую строку:] – GManNickG
Обратите внимание, что потоки передаются по ссылке. Они также могут передаваться указателем, но не по значению. –