- 1 名前:デフォルトの名無しさん [2011/09/15(木) 00:17:43.25 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ 01 pc11.2ch.net/test/read.cgi/tech/1167476845/ 02 pc11.2ch.net/test/read.cgi/tech/1178503366/ 03 pc11.2ch.net/test/read.cgi/tech/1187521676/ 04 pc11.2ch.net/test/read.cgi/tech/1221633708/ 05 pc11.2ch.net/test/read.cgi/tech/1230516307/ 06 pc11.2ch.net/test/read.cgi/tech/1231564903/ 07 pc11.2ch.net/test/read.cgi/tech/1232983248/ 08 pc12.2ch.net/test/read.cgi/tech/1235921779/ 09 pc12.2ch.net/test/read.cgi/tech/1240022781/ 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ 11 pc12.2ch.net/test/read.cgi/tech/1245059383/ 12 pc12.2ch.net/test/read.cgi/tech/1248010352/ 13 pc12.2ch.net/test/read.cgi/tech/1260842197/ 14 pc12.2ch.net/test/read.cgi/tech/1269273471/ 15 pc12.2ch.net/test/read.cgi/tech/1273368706/ 16 hibari.2ch.net/test/read.cgi/tech/1279285647/ 17 hibari.2ch.net/test/read.cgi/tech/1285115590/ 18 hibari.2ch.net/test/read.cgi/tech/1291571263/ 19 hibari.2ch.net/test/read.cgi/tech/1308106024/
- 87 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 10:18:33.83 ]
- std::ifstream ifs("test.txt", std::ios::in|std::ios::binary);
ifs.seekg(0, std::ios::end ); size_t size = ifs.tellg(); ifs.seekg(0, std::ios::beg ); char *buff = new char[size+1]; ifs.read(buff, size); buff[size] = '\0'; // ... delete[] buff;
- 88 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 10:54:32.05 ]
- #include <exception>
#include <fstream> #include <iostream> #include <string> #include <vector> template <class A> void readAllAtOnce(char const * path, std::vector<char, A> & data) { std::fstream file; file.exceptions(std::ios::badbit | std::ios::eofbit | std::ios::failbit); file.open(path, std::ios::in | std::ios::binary); file.seekg(0, std::ios::end); std::ios::pos_type end(file.tellg()); file.seekg(0, std::ios::beg); std::ios::pos_type beg(file.tellg()); std::ios::off_type off(end - beg); if(data.max_size() < off) throw std::exception(); data.resize(off); file.read(&data[0], off); file.close(); } int main(void) { try { std::vector<char> buf; readAllAtOnce("test.txt", buf); std::string str(buf.begin(), buf.end()); std::cout << str << std::endl; } catch(...) { std::cout << "err" << std::endl; } return 0; }
|

|