c++: file_read_write

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-10-18 00:00:01 +00:00
parent 12d9870d52
commit f6123ac9f1
2 changed files with 48 additions and 0 deletions

View File

@@ -13540,6 +13540,8 @@ Programs under link:userland/cpp/[] are examples of https://en.wikipedia.org/wik
** link:userland/cpp/template.cpp[]: basic example
** link:userland/cpp/template_class_with_static_member.cpp[]: https://stackoverflow.com/questions/3229883/static-member-initialization-in-a-class-template
** link:userland/cpp/if_constexpr.cpp[]: C++17 `if constexpr`
* fstream
** link:userland/cpp/file_write_read.cpp[]
[[cpp-multithreading]]
==== C++ multithreading

View File

@@ -0,0 +1,46 @@
/* https://cirosantilli.com/linux-kernel-module-cheat#cpp */
#include <lkmc.h>
#include <cassert>
#include <fstream>
#include <sstream>
// https://stackoverflow.com/questions/116038/what-is-the-best-way-to-read-an-entire-file-into-a-stdstring-in-c
// https://stackoverflow.com/questions/2602013/read-whole-ascii-file-into-c-stdstring
std::string read_file(const std::string& path) {
std::ifstream ifs(path);
assert(ifs.is_open());
std::stringstream sstr;
sstr << ifs.rdbuf();
return sstr.str();
}
int main(void) {
std::string path = LKMC_TMP_FILE;
std::string data = "asdf\nqwer\n";
// Write entire string to file at once.
{
std::ofstream ofs(path);
assert(ofs.is_open());
ofs << data;
ofs.close();
}
// Read entire file into string.
std::string read_output = read_file(path);
assert(read_output == data);
// Append to a file.
{
std::string append_data = "zxcv\n";
std::ofstream ofs(path, std::ios::app);
assert(ofs.is_open());
ofs << append_data;
ofs.close();
assert(read_file(path) == data + append_data);
}
return EXIT_SUCCESS;
}