#include <fstream> #include <sstream>
const char* filepath = "C:/test.txt"; ifstream in(filepath); if(in.bad()) { printf("open file '%d' failed!", filepath); return; } stringstream ss;
ss << in.rdbuf(); string str(ss.str()); printf(str.c_str()); in.close();
|
这里再贴上用fopen()打开一个文件并写入二进制流的方法。
void RegexSearch::LoadStreamFromFile( char** buffer,const char* filepath ) { FILE* pFile = NULL; int err = ::fopen_s(&pFile, filepath, "rb"); if(0 != err) { printf("open file '%s' failed!", filepath); return; } unsigned int length = 0; int growSize = 512; while(!feof(pFile)) { char* temp = (char*)calloc(length + growSize, sizeof(char)); //将之前已读取的字节流拷贝到新的已扩容的动态数组中 memcpy( temp, *buffer, length ); if(*buffer) free(*buffer); *buffer = temp; //每次读取固定大小growSize长度个字符,并拼接到*buffer指向的字符串尾部 fread((*buffer) + length, sizeof(char), growSize, pFile); length += growSize; } fclose(pFile); }
|
阅读(3072) | 评论(0) | 转发(0) |