ofstream不能在Linux上工作

我有一个简单的testing代码:

#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比它给出了以下输出: 在这里输入图像说明

我GOOGLE了这个错误无济于事。 有谁知道如何解决这个问题? 我在我的项目中使用了大量的stream,并希望在Linux上进行编译。

编辑:所以我现在编译感谢WinterMute,但现在它打印空文件。 我该如何解决?

编辑2:不知道为什么,但第二次编译它的工作。 谢谢!

使用

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

这个:

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

需要一个std::ofstream没有的拷贝构造函数或只有自C ++ 11以来才有的移动构造函数。 GCC 4.7还没有完全支持C ++ 11,显然这是缺少的功能之一。

在评论中,技术委员会提到,可移动的流将不会到海湾合作委员会,直到计划于今年发布的第5版。 这让我感到惊讶,因为gcc声称完全支持C ++ 11版本4.8.1,这对于编译器是正确的,但对于libstdc ++却是如此。 眼见为实。

所以也许值得一提的是, libc ++ (clang和llvm附属的一个c ++标准库实现)实现了可移动的流,并且clang 3.5和gcc 4.9(这里是我在这里试过的那些)编译原始代码而不是libstdc ++。

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

ofstream没有复制构造函数。