Posted on 03-06-2009
Filed Under (技术) by waterlin

在C++中,一般喜欢用输入输出流来进行文件操作。但在用fstream操作的时候,读到一个空格后,就会停止。有什么办法能完整地读入整个文件而不抛弃空格、换行符?即保留原有的格式……

有两种方法可以实现在C++里完整地读入整个文件。

第一种方法示例代码:

string str,strTotal;
ifstream in;
in.open(“myfile.txt”);
getline(in,str);
while ( in ) {
strTotal += str;
getline(in,str);
}

第二种方法,用binary的方式读写整个文件
示例代码1:

std::ifstream file1(“in.txt”, ios::in | ios::binary);
std::ofstream file2(“out.txt”, ios::out | ios::binary);

char input;
while(file1.read(&input, 1))
{
file2.write(&input, 1);
}

file1.close();
file2.close();

示例代码2:

// reading a complete binary file
#include <iostream>
#include <fstream>
using namespace std;

ifstream::pos_type size;
char * memblock;

int main () {
ifstream file (“example.bin”, ios::in|ios::binary|ios::ate);
ofstream OutTest(“test.zip”,ios::out|ios::binary);//just for local test

if (file.is_open())
{
size = file.tellg();
memblock = new char [size];
file.seekg (0, ios::beg);
file.read (memblock, size);
OutTest.write(memblock,size);//write to local folder for check if the data read correctly.

file.close();
OutTest.close();

cout << “the complete file content is in memory”;

delete[] memblock;
}
else cout << “Unable to open file”;
return 0;
}

对于一般的文本操作来说,用binary的方法来读文件没啥用。但是在类似于socket传输文件之类的情形下,就非常地有必要了。这时,可以一次性简单明了的读入文件,再用来传输。

© 2009, 浏忙大爆炸. All rights reserved.
除非注明,浏忙大爆炸文章均为原创,转载请以链接形式标明本文地址。

(0) Comments    (977) Views    Read More   
Post a Comment
Name:
Email:
Website:
Comments: