diff options
| author | Jan Tuomi <jan-sebastian.tuomi@aalto.fi> | 2016-10-09 13:44:06 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan-sebastian.tuomi@aalto.fi> | 2016-10-09 14:50:24 +0300 |
| commit | 40c4dfd312b24a7e012448e39a363c07fa1e8c5d (patch) | |
| tree | 6f287e601a9f94e12d2efb0b5720db5adef650a9 /editor.cpp | |
| parent | 43fe02ecb4c1c99e4d942488e8982890d8c6a8d7 (diff) | |
Add writing to file
Diffstat (limited to 'editor.cpp')
| -rw-r--r-- | editor.cpp | 36 |
1 files changed, 34 insertions, 2 deletions
@@ -1,10 +1,11 @@ #include "editor.h" #include "utils.h" +#include <fstream> #include <limits> #include <iostream> -Editor::Editor(std::vector<std::string>* contents): - m_current_line(0) { +Editor::Editor(std::vector<std::string>* contents, const std::string& filename): + m_current_line(0), m_filename(filename) { m_contents = contents; } @@ -24,6 +25,9 @@ int Editor::run_editor() { case 'm': move_to_command(); break; + case 'w': + write_command(); + break; default: break; } @@ -80,3 +84,31 @@ int Editor::move_to_line(int line) { m_current_line = line; return 0; } + +int Editor::write_command() { + std::cout << "Write to file? [y/n] "; + char answer = Utils::getch(); + + if (answer == 'y') { + return write(); + } + + return 0; +} + +int Editor::write() { + std::ofstream file; + file.open(m_filename); + if (file.fail()) { + std::cout << "Can't open file " << m_filename << " for writing!"; + return 1; + } + + for (int i = 0; i < m_contents->size(); i++) { + file << m_contents->at(i) << '\n'; + } + + file.close(); + + return 0; +} |
