【发布时间】:2014-12-19 01:12:44
【问题描述】:
我在这段代码中遇到了困难:Ubuntu OS 和 g++
is.open(name.c_str(),ios::in | std::ifstream::binary); }
while (!is) ; // this is the end of the user input loop, asking for "name"
// get length of file:
is.seekg (0, is.end);
int length = is.tellg();
is.seekg (0, is.beg);
// allocate memory:
char * buffer = new char [length];
// read data as a block:
is.read (buffer,length);
is.close();
此代码有效,整个文件正确显示在我的终端上。当我尝试对文件数据做任何其他事情时,问题就出现了。从上面开始,我已经解决了这个问题:
is.close();
std::cout.write (buffer,length);
char x;
int i;
char *it = buffer;
char *ip;
std::cout << "\nbuffer contains: \n\n";
ip = it;
// for ( i = 0 ; 10 ; ++i ) {
// std::cout << &ip << "\n";
// ip++ ; }
std::cout << &ip << "\n";
*ip++ ;
std::cout << &ip << "\n";
*ip++ ;
std::cout << &ip << "\n";
ip++ ;
std::cout << &ip << "\n";
std::cout << "\n";
我用过这个,cout
我需要逐个字符多次搜索文件数据。我应该怎么做才能做到这一点?如果我尝试将 memcpy 放入一个字符数组中,如何创建正确大小的数组?
【问题讨论】:
-
数据已经在
buffer,所以你发布的代码没有告诉我们你说的哪里出了问题。 -
两件事:1)您发布的代码示例是乱码。什么是“} 而 (!is) ;”应该是关于? 2)解释“文件数据似乎存储为长整数”语句的含义。这意味着什么?实际上,关于您的问题还有第三个令人困惑的部分:“当我尝试使用 read 处理要输出的任何内容时”。 “读取”通常是指读取输入,而不是产生输出。请重写您的问题并澄清它。
-
请显示未按预期工作的代码。另外,是什么让您认为“文件数据似乎存储为长整数”?它是
chars。我们真正需要帮助您的是MCVE。