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

c – 如何将字符串写入二进制文件

发布时间:2020-12-16 10:38:21 所属栏目:百科 来源:网络整理
导读:使用此代码,我尝试打印字符串“foo”10次 以二进制格式.但为什么这个功能没有起作用呢? #include iostream#include fstreamusing namespace std;template typename T void WriteStr2BinFh (string St,ostream fn) { for (unsigned i = 0; i St.size(); i++)
使用此代码,我尝试打印字符串“foo”10次
以二进制格式.但为什么这个功能没有起作用呢?

#include <iostream>
#include <fstream>
using namespace std;

template <typename T> void WriteStr2BinFh (string St,ostream &fn) {
     for (unsigned i = 0; i < St.size(); i++) {
         char CStr = St[i];
         fn.write(&CStr.front(),CStr.size());
     }
     return;
}

int main() {
   string MyStr = "Foo";
   ofstream myfile;
   myfile.open("OuputFile.txt",ios::binary|ios::out);

   // We want to print it 10 times horizontally
   // separated with tab

  for (int i = 0; i < 9; i++) {
      WriteStr2BinFh(Mystr+"t",myfile);
   }

   myfile.close();   
}

解决方法

这里有很多错误,我只想列出我看到的一切:

你的for循环条件应该是i< 10. 你为什么使用模板而不是模板化的参数T? 你在CStr上调用方法front(),但CStr是一个char,而不是一个字符串,所以我甚至不知道如何编译. 假设CStr是一个字符串,你不想使用&来获取front()迭代器的地址,而是想要说:

fn.write(St.c_str(),St.size());

并且您不希望为St.size()迭代循环.只要做上面的事情.

(编辑:李大同)

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

    推荐文章
      热点阅读