#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;
}
我想我明白这背后的想法,但我觉得(我很确定)我不知道我在做什么。我查了一下,一切都让我很困惑。我已经阅读了C ++参考资料,然后我用Google搜索了它,但我仍然不明白我做错了什么。
#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;
}
我尝试了这个,但它没有打印任何东西。为什么这不起作用?
答案 0 :(得分:1)
如果您想要读取和写入同一个文件,只需使用普通std::fstream
...就不需要尝试打开与ifstream
和{{1}相同的文件}}。此外,如果您要将数据写入文件,请使用实际ofstream
实例对象上的operator<<
,而不是fstream
...只会写入std::cout
所在的位置set,通常是控制台。最后,对std::cout
的调用必须返回缓冲区,不能使用read
作为参数。因此,您的代码将更改为以下内容:
NULL