我正在尝试设置文件流或类似的东西,但我对我应该做的事情感到很困惑

时间:2012-02-22 01:26:20

标签: c++ fstream ifstream ofstream

#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;
}

我尝试了这个,但它没有打印任何东西。为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

如果您想要读取和写入同一个文件,只需使用普通std::fstream ...就不需要尝试打开与ifstream和{{1}相同的文件}}。此外,如果您要将数据写入文件,请使用实际ofstream实例对象上的operator<<,而不是fstream ...只会写入std::cout所在的位置set,通常是控制台。最后,对std::cout的调用必须返回缓冲区,不能使用read作为参数。因此,您的代码将更改为以下内容:

NULL