I made a program that is supposed to be a simple text editor that can create (if not existed) a .cpp
file, read the content of the file and display it on the console, and modify the content and save the changes when Ctrl+S is pressed.
The program does all the above, except saving the changes. Can anybody explain what the problem is?
Here is below the full code:
#include <iostream>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
void work(std::fstream& file, const std::string& path)
{
std::string previous;
while (not file.eof()) {
std::getline(file, previous);
if (not previous.empty())
std::cout << previous << '\n';
}
char c;
std::string buff;
while (true) {
c = std::cin.get();
buff += c;
switch (c) {
case 19:
if (not file.is_open()) {
file.open(path, std::ios::in | std::ios::out);
if (not file.is_open()) {
std::cerr << "Unable to open!" << std::endl;
exit(EXIT_FAILURE);
}
}
file.seekp(0, std::ios::end);
buff.pop_back();
for (char x : buff)
file.put(x);
std::cout << "Saved!" << std::endl;
buff.clear();
file.close();
break;
default:
continue;
}
}
}
int main()
{
const std::string path = "D:\\some_file.cpp";
if (not fs::exists(path)) {
std::ofstream new_file(path);
if (not new_file.is_open()) {
std::cerr << "Unable to create the file!" << std::endl;
return EXIT_FAILURE;
}
else
new_file.close();
}
std::fstream file(path, std::ios::in | std::ios::out);
work(file, path);
}