Saya dalam tutorial yang memperkenalkan file (cara membaca dan menulis dari \ ke file)
Pertama-tama, ini bukan pekerjaan rumah, ini hanya bantuan umum yang saya cari.
Saya tahu cara membaca satu kata dalam satu waktu, tetapi saya tidak tahu cara membaca satu baris dalam satu waktu atau cara membaca seluruh file teks.
Bagaimana jika file saya berisi 1000 kata? Tidak praktis membaca setiap kata.
File teks saya bernama (Baca) berisi yang berikut ini:
Saya suka bermain game Saya suka membaca Saya punya 2 buku
Inilah yang telah saya capai sejauh ini:
#include <iostream>
#include <fstream>
using namespace std;
int main (){
ifstream inFile;
inFile.open("Read.txt");
inFile >>
Apakah ada cara yang mungkin untuk membaca seluruh file sekaligus, daripada membaca setiap baris atau setiap kata secara terpisah?
Jawaban:
Anda dapat menggunakan
std::getline
:#include <fstream> #include <string> int main() { std::ifstream file("Read.txt"); std::string str; while (std::getline(file, str)) { // Process str } }
Perhatikan juga bahwa lebih baik Anda membuat aliran file dengan nama file di konstruktornya daripada membuka secara eksplisit (hal yang sama berlaku untuk penutupan, biarkan destruktor yang melakukan pekerjaan).
Dokumentasi lebih lanjut tentang
std::string::getline()
dapat dibaca di Referensi CPP .Mungkin cara termudah untuk membaca seluruh file teks adalah dengan menggabungkan baris yang diambil tersebut.
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'); }
sumber
while(getline(f, line)) { ...}
sebenarnya cara yang disarankan untuk melakukan ini. Ini dijelaskan di sini: gehrcke.de/2011/06/… --- di sana Anda juga menemukan pendekatan yang berguna untuk penanganan kesalahan yang tepat.#include <iostream>
#include <iostream>
diperlukan? Menurut saya itu<fstream>
dan<string>
sudah cukup. Jika yang Anda maksudstd::getline
, itu ada di dalam<string>
, bukan di<iostream>
.Saya tahu ini adalah utas yang sangat lama, tetapi saya juga ingin menunjukkan cara lain yang sebenarnya sangat sederhana ... Ini adalah beberapa contoh kode:
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream file("filename.txt"); string content; while(file >> content) { cout << content << ' '; } return 0; }
sumber
Saya pikir Anda bisa menggunakan fungsi istream .read (). Anda dapat melakukan loop dengan ukuran chunk yang wajar dan membaca langsung ke buffer memori, lalu menambahkannya ke semacam wadah memori arbitrer (seperti std :: vector). Saya dapat menulis sebuah contoh, tetapi saya ragu Anda menginginkan solusi yang lengkap; tolong beri tahu saya jika Anda memerlukan informasi tambahan.
sumber
Nah, untuk melakukan yang satu ini juga bisa menggunakan fungsi freopen yang disediakan di C ++ - http://www.cplusplus.com/reference/cstdio/freopen/ dan membaca file baris demi baris sebagai berikut -:
#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; }
sumber
Metode lain yang belum disebutkan adalah
std::vector
.std::vector<std::string> line; while(file >> mystr) { line.push_back(mystr); }
Kemudian Anda cukup mengulang vektor dan memodifikasi / mengekstrak apa yang Anda butuhkan /
sumber
vector
adalah langkah yang tidak perlu. Anda bisa mengulangiifstream
penggunaanstd::istream_iterator<std::string>(inFile)
.Anda juga dapat menggunakan ini untuk membaca semua baris dalam file satu per satu lalu mencetak i
#include <iostream> #include <fstream> using namespace std; bool check_file_is_empty ( ifstream& file){ return file.peek() == EOF ; } int main (){ string text[256]; int lineno ; ifstream file("text.txt"); int num = 0; while (!check_file_is_empty(file)) { getline(file , text[num]); num++; } for (int i = 0; i < num ; i++) { cout << "\nthis is the text in " << "line " << i+1 << " :: " << text[i] << endl ; } system("pause"); return 0; }
Semoga ini bisa membantu Anda :)
sumber
halo bro ini adalah cara membaca string di baris yang tepat menggunakan kode ini
Semoga ini bisa membantu Anda!
#include <iostream> #include <fstream> using namespace std; int main (){ string text[1]; int lineno ; ifstream file("text.txt"); cout << "tell me which line of the file you want : " ; cin >> lineno ; for (int i = 0; i < lineno ; i++) { getline(file , text[0]); } cout << "\nthis is the text in which line you want befor :: " << text[0] << endl ; system("pause"); return 0; }
Semoga berhasil !
sumber