Если вы знаете, что ваш файл содержит текст, то вы можете использовать STLSoft «s platformstl::memory_mapped_file
:
platformstl::memory_mapped_file file("your-file-name");
std::string contents(static_cast<char const*>(file.memory()), file.size());
или
platformstl::memory_mapped_file file("your-file-name");
std::wstring contents(static_cast<wchar_t const*>(file.memory()),
file.size()/sizeof(wchar_t));
На WIndows, который оставит вашу строку, содержащую \r\n
последовательности , поэтому вместо этого вы можете использовать функцию winstl::load_text_file()
:
std::string contents;
winstl::load_text_file("your-file-name", contents);
Если вы хотите загрузить в коллекцию строк, а затем использовать platformstl::read_lines()
:
platformstl::basic_file_lines<char> lines("your-file-name");
size_t n = lines.size();
std::string line3 = lines[3];
Я думаю, что это дает неправильный ответ, если файл не оканчивается символом новой строки. –
Добавление правильного if-теста в ловушку для такого условия остается в качестве упражнения для OP. ;-) –
Только упоминание об этом, потому что вопрос задает минимальный код: стандарт C++ примет «return 0;»; если достигнут конец основной функции. Это особый случай для main() –