| 439 | } |
| 440 | |
| 441 | void ConvertLineByLine() { |
| 442 | PrintInteractiveStdinHint(); |
| 443 | std::istream& inputStream = std::cin; |
| 444 | FILE* fout = GetOutputStream(); |
| 445 | bool isFirstLine = true; |
| 446 | std::string line; |
| 447 | while (std::getline(inputStream, line)) { |
| 448 | if (!isFirstLine) { |
| 449 | fputs("\n", fout); |
| 450 | } else { |
| 451 | isFirstLine = false; |
| 452 | } |
| 453 | measurement.inputBytes += line.size(); |
| 454 | const std::string& output = ConvertLineByMode(line); |
| 455 | measurement.outputBytes += output.size(); |
| 456 | const auto writeStart = std::chrono::steady_clock::now(); |
| 457 | fputs(output.c_str(), fout); |
| 458 | if (!noFlush) { |
| 459 | // Flush every line if the output stream is stdout. |
| 460 | fflush(fout); |
| 461 | } |
| 462 | measurement.writeMs += DurationToMilliseconds( |
| 463 | std::chrono::steady_clock::now() - writeStart); |
| 464 | } |
| 465 | fclose(fout); |
| 466 | } |
| 467 | |
| 468 | void ConvertFileStreams(FILE* fin, FILE* fout) { |
| 469 | try { |
no test coverage detected