30/09/2018, 18:14

Gặp lỗi với ifstream, tại sao em phải dùng 1 xâu kí tự thay vì 1 biến kiểu string ạ?

Lỗi tại dòng ifstream fi(path) .
Tại sao em phải dùng 1 xâu kí tự thay vì 1 biến kiểu string ạ?

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

int main()
{
    string path;
    cout <<"File's path: ";
    cin >>path;
    ifstream fi(path);
    if (fi.is_open())
    {
        while (!fi.eof())
        {
            string line;
            getline(fi,line);
            cout <<line <<endl;
        }
    }
    else cout <<"File is not found!" <<endl;
    fi.close();
    system("pause");
    return 0;
}

Mai Anh Dũng viết 20:30 ngày 30/09/2018

Tại sao em phải dùng 1 xâu kí tự thay vì 1 biến kiểu string ạ?

ifstream chỉ nhận vào char, bản chất của ifstream là như thế này

typedef basic_ifstream<char> ifstream;

Anh em của của ifstreamwifstream

typedef basic_ifstream<wchar_t> wifstream;

Cả hai đều là typedef, tức một định dạng lại của kiểu basic_ifstream, kiểu này là template.


Sửa dòng:

ifstream fi(path);

Thành

ifstream fi(path.c_str());
Trần Minh Hiếu viết 20:22 ngày 30/09/2018

Em hiểu rồi ạ! Cảm ơn anh nhiều

Bài liên quan
0