c++中一次读取整个文件的内容的方法:
std::ifstream t; int length; t.open("file.txt"); // open input file t.seekg(0, std::ios::end); // go to the end length = t.tellg(); // report location (this is the length) t.seekg(0, std::ios::beg); // go back to the beginning buffer = new char[length]; // allocate memory for a buffer of appropriate dimension t.read(buffer, length); // read the whole file into the buffer t.close(); // close file handle // ... do stuff with buffer here ...
第一种方法:
#include
#include
#include
std::ifstream t("file.txt"); std::string str((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
第二种方法:
#include
#include
#include
std::ifstream t("file.txt"); std::stringstream buffer; buffer << t.rdbuf(); std::string contents(buffer.str());
#include
#include
#include
#include
#include
using
namespace
std;
int
main()
{
ifstream ifs(
"test.cpp"
, ios_base::binary );
string str;
std::copy(std::istream_iterator
char
>(ifs),std::istream_iterator
char
>(),back_inserter(str) );
cout<
return
0;
}
#include
#include
#include
using
namespace
std;
int
main ()
{
ifstream inf(
"test.cpp"
, ios::binary);
if
(inf)
{
ostringstream os;
os << inf.rdbuf();
cout << os.str();
}
system
(
"pause"
);
return
0;
}
include
#include
#include
using
namespace
std;
int
main ()
{
ifstream inf(
"test.cpp"
, ios::binary);
if
(inf)
{
ostringstream os;
cout <
}
system
(
"pause"
);
return
0;
}
读出指定字节数,并且包含回车符号等等:
#include
#include
#include
#include
#include
#include
using
namespace
std;
class
ReadBuffer:unary_function
void
>
{
public
:
string &buffer;
size_t
length;
ReadBuffer(string &buf,
size_t
len):buffer(buf),length(len){buffer.reserve(length);}
void
operator()(
char
c )
{
if
( buffer.size()
{
buffer+=c;
}
}
};
int
main()
{
const
size_t
N=10;
ifstream infile(
"test.txt"
, ios::binary );
if
( infile.fail() ){
return
0; }
string buffer;
istreambuf_iterator<
char
> bg(infile);
istreambuf_iterator<
char
> ed;
for_each( bg,ed,ReadBuffer(buffer,N) );
copy( buffer.begin(),buffer.end(), ostream_iterator<
char
>(cout,
""
) );
return
0;
}