gpt4 book ai didi

c++ - ofstream 无法在 Linux 上运行

转载 作者:IT王子 更新时间:2023-10-29 00:53:01 24 4
gpt4 key购买 nike

我有一个简单的测试代码:

#include <string>
#include <iostream>
#include <fstream>

int main() {
std::ofstream strm = std::ofstream("test.txt");
strm << "TEST123";
strm.close();
return 0;
}

如果我在 Windows 上编译它,它会完美运行。但是,当我使用以下命令在 debian 上编译它时:g++-4.7 -std=c++0x -lpthread TestStream.cpp -ldl -o TestStream比它给出以下输出: enter image description here

我用谷歌搜索了这个错误,但无济于事。有人知道如何解决这个问题吗?我在我的项目中使用了很多流,并且也想在 linux 上编译它。

编辑:多亏了 WinterMute,我现在可以编译它了,但是现在它打印的是空文件。我该如何解决这个问题?

EDIT2:不知道为什么,但第二次编译成功了。谢谢!

最佳答案

使用

std::ofstream strm("test.txt");

这个:

std::ofstream strm = std::ofstream("test.txt");

需要 std::ofstream 没有的复制构造函数或仅自 C++11 起可用的移动构造函数。 GCC 4.7 还没有完全支持 C++11,显然这是缺少的功能之一。

在评论中,T.C.提到可移动流直到版本 5 才会出现在 gcc 中,该版本计划于今年发布。这让我感到惊讶,因为 gcc 声称 4.8.1 版完全支持 C++11——这对于编译器来说是正确的,但对于 libstdc++ 则不然。现实叮咬。

所以也许值得一提的是 libc++ (与 clang 和 llvm 相关的 c++ 标准库实现)实现可移动流,如果使用 clang 3.5 和 gcc 4.9(我在这里尝试过)编译原始代码而不是 libstdc++。

关于c++ - ofstream 无法在 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27878495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com