【问题标题】:C++: reading from a file with null charactersC ++:从具有空字符的文件中读取
【发布时间】:2010-11-01 17:18:14
【问题描述】:

不幸的是,我必须从文件中读取数据以进行分配,而不是使用空格分隔各个字段,而是使用空字符。当从文件中获取整数时,它们被提取得很好,但是使用字符串我只是从我的未初始化字符数组中得到一个空格和垃圾。关于如何将字符提取到我的字符数组中而忽略空字符的任何想法。

编辑:

char fName[15],lName[15],pMethod[5],roomType[10],purpose[15];

int days, roomNum;

long guestID;

datafile>>guestID;
datafile.getline(fName,15,'\0');
datafile.getline(lName,15,'\0');

cout<<guestID<<endl;
cout<<fName<<endl;
cout<<lName<<endl;

是我现在正在使用的代码,不幸的是 fName 没有再次获取除 null 之外的任何内容 lName 正在获取 fName 的字符串值。正在考虑将数字作为字符串并将它们转换。

【问题讨论】:

  • 请显示您读取字符串的代码。
  • char fName[15],lName[15],pMethod[5],roomType[10], purpose[15];整数天,房间号;长客人ID;数据文件>>guestID>>fName>>lName>>pMethod>>days>>roomType>>roomNum>>目的;是我在使用 getline 之前所做的事情

标签: c++ file fstream


【解决方案1】:

使用getline 并传递\0(空字符)作为分隔符。

【讨论】:

    【解决方案2】:

    std::getline 有一个可选参数,它是分隔符('\n',默认情况下)。

    【讨论】:

      【解决方案3】:

      http://www.cplusplus.com/reference/iostream/istream/read/ 一口气读取文件到缓冲区,然后从那里继续。

      【讨论】:

      • 您必须注意正确的内存分配,并且您必须自己解析二进制数据,包括整数转换。但总的来说,大块读取数据通常更好。该链接正确分配了内存。
      【解决方案4】:

      遍历字节并忽略空字符字节,

      【讨论】:

        猜你喜欢
        • 2020-03-18
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-18
        • 2014-01-21
        • 2012-02-04
        相关资源
        最近更新 更多