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

c seekg似乎返回一个十六进制地址而不是.txt文件中的实际char

发布时间:2020-12-16 06:51:44 所属栏目:百科 来源:网络整理
导读:我得到了一个简单的代码剪切,我正在尝试学习如何使用c库读取纯文本.在与程序相同的目录中,我得到了包含ASCII纯文本行的text1.txt.我运行代码后,我希望从textOut.txt的text1.txt获取相同的字符.相反,在textOut.txt我有100行 0x7ffdf21fd018 0x7ffdf21fd018 0x
我得到了一个简单的代码剪切,我正在尝试学习如何使用c库读取纯文本.在与程序相同的目录中,我得到了包含ASCII纯文本行的text1.txt.我运行代码后,我希望从textOut.txt的text1.txt获取相同的字符.相反,在textOut.txt我有100行

0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018
0x7ffdf21fd018

这是代码:

#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
using namespace std;

int main() {

fstream  afile;
afile.open("text1.txt",ios::in );   
ofstream outfile;
outfile.open("textOut.txt");
int counter=0;
for( counter=0;counter<100;counter++ ){
   outfile << afile.seekg(counter);
   outfile << "n";
   //printf("%dn",counter);
   }

return 0;
}

解决方法

seekg returns *this,因此令人惊讶的是<<运算符在这种情况下工作. 而是使用

outfile << static_cast<char>(afile.get());

完整计划:

#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
using namespace std;

int main()
{

    fstream  afile;
    afile.open("text1.txt",ios::in);
    ofstream outfile;
    outfile.open("textOut.txt");
    int counter=0;
    for (counter=0; counter<100; counter++) {

        afile.seekg(counter);
        outfile << static_cast<char>(afile.get());
        //outfile << afile.seekg(counter);
        outfile << "n";
        //printf("%dn",counter);
    }

    return 0;
}

(编辑:李大同)

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

    推荐文章
      热点阅读