Как читать строку за строкой или весь текстовый файл сразу?
Я в учебнике, который вводит файлы (как читать и писать изв файл)
во-первых, это не домашнее задание, это просто общая помощь, которую я ищу.
Я знаю, как читать одно слово за раз, но я не знаю, как читать одну строку за раз или как читать весь текстовый файл.
Что делать, если мой файл содержит 1000 слов? Нецелесообразно читать каждое слово.
мой текстовый файл с именем (чтение) содержит следующее:
Я люблю играть в игры Я люблю читать У меня есть 2 книги
Это то, что я сделал до сих пор:
#include <iostream>
#include <fstream>
using namespace std;
int main (){
ifstream inFile;
inFile.open("Read.txt");
inFile >>
есть ли способ, чтобы прочитать весь файл сразу, вместо того, чтобы читать каждую строку и каждое слово отдельно?
5 ответов:
можно использовать
std::getline
:#include <fstream> #include <string> int main() { std::ifstream file("Read.txt"); std::string str; while (std::getline(file, str)) { // Process str } }
также обратите внимание, что лучше просто построить поток файлов с именами файлов в его конструкторе, а не явно открывать (то же самое касается закрытия, просто позвольте деструктору выполнить работу).
далее документация о
std::string::getline()
можно прочитать на сайте ссылка CPP.вероятно, самый простой способ прочитать весь текстовый файл - это просто объединить эти полученные строки.
std::ifstream file("Read.txt"); std::string str; std::string file_contents; while (std::getline(file, str)) { file_contents += str; file_contents.push_back('\n'); }
Я знаю, что это действительно очень старый поток, но я хотел бы также указать другой способ, который на самом деле очень прост... Это пример кода:
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream file("filename.txt"); string content; while(file >> content) { cout << content << ' '; } return 0; }
Я думаю, что вы могли бы использовать istream .читать (функция). Вы можете просто выполнить цикл с разумным размером куска и прочитать непосредственно в буфер памяти, а затем добавить его в какой-то произвольный контейнер памяти (например, std::vector). Я мог бы написать пример, но я сомневаюсь, что вы хотите, чтобы полное решение, Пожалуйста, дайте мне знать, если вам нужна любая дополнительная информация.
Ну, для этого можно также использовать функцию freopen, представленную в C++ -http://www.cplusplus.com/reference/cstdio/freopen/ и читать файл строка за строкой следующим образом -:
#include<cstdio> #include<iostream> using namespace std; int main(){ freopen("path to file", "rb", stdin); string line; while(getline(cin, line)) cout << line << endl; return 0; }