加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – ofstream不在linux上工作

发布时间:2020-12-16 10:10:58 所属栏目:百科 来源:网络整理
导读:我有一个简单的测试代码: #include string#include iostream#include fstreamint main() {std::ofstream strm = std::ofstream("test.txt");strm "TEST123";strm.close();return 0;} 如果我在Windows上编译它,它完美地工作.但是当我使用以下命令在debian上
我有一个简单的测试代码:

#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搜索这个错误无济于事.有谁知道如何解决这个问题?我在我的项目中使用了很多流,并且想在linux上编译它.

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

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

解决方法

使用

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声称对版本4.8.1提供了完整的C 11支持 – 这对于编译器来说是正确的,但对于libstdc则不然.眼见为实.

所以值得一提的是,libc++(与clang和llvm相关的交流标准库实现)实现了可移动流,并且如果使用它们,则将3.5和gcc 4.9(这些是我在这里并尝试过)编译原始代码libstdc.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读