#include <iostream>
#include <fstream>
int main() {
std::ofstream outfile("text.txt", ios::trunc);
std::ifstream infile("text.txt", ios::trunc);
outfile.seekp(0);
std::cout << "This is a file";
infile.seekg(0, ios::end);
int length = infile.tellg();
infile.read(0, length);
infile.close();
outfile.close();
return 0;
}
I think I get the idea behind this, but I feel like (and I’m pretty sure) I have no idea what I’m doing. I’ve looked it up and everything has confused me. I’ve read through a C++ reference, and then I googled it, but I still don’t understand what I’m doing wrong.
#include <iostream>
#include <fstream>
#include <cstring>
int main() {
std::fstream file("text.txt", std::ios_base::in | std::ios_base::out);
file << "This is a file";
int length = file.tellg();
std::string uberstring;
file >> uberstring;
std::cout << uberstring;
char *buffer = new char[length + 1];
file.read(buffer, length);
buffer[length] = '\0';
file.close();
delete [] buffer;
return 0;
}
I tried this, but it isn’t printing anything. Why isn’t this working?
If you want to read and write to the same file, just use a normal
std::fstream… there is no need to attempt and open the same file as both aifstreamandofstream. Also if you want to write data to the file, use theoperator<<on the actualfstreaminstance object, notstd::cout… that will simply write to whereverstd::coutis set, which is typically the console. Finally, the call toreadhas to go back into a buffer, you can’t useNULLas an argument. So your code would change to the following: