Если вы хотите получить комментарии о том, как сделать код более точным, Code Review - это то место, где вы хотите быть.
Предполагая, что вы работаете со стандартным вводом и выводом и будете выполнять перенаправление и тому подобное на другом языке: да, то, что вы делаете, является возможным решением. Вы не говорите нам, что вы хотите заменить, но это должно сработать:
if (line == "my match")
std::cout << "my replacement\n";
else
std::cout << line << '\n';
Я бы сказал, что самая большая проблема в том, что она не очень общая; если вы хотите сопоставить только строку в зависимости от более сложного предиката, лучше всего написать для этого специальную функцию (или регулярное выражение); То же самое для замены зависит от линии. Например, в вашем цикле вы могли бы иметь:
std::cout << make_replacement(line);
И тогда вы можете определить:
std::string make_replacement(std::string const& line) {
// some logic to construct a new string based on the line
}
Обратите внимание, что при этом создается копия для каждой строки, которая может быть дорогой (зависит от требований и размера файла).