2015-12-15 9 views
0

Я получаю два синтаксиса? ошибок, даже несмотря на успешное выполнение проекта. Некоторые части моего кода выделены красным цветом в Visual Studio в следующих местах, которые я комментировал на:C++, не может открыть исходный файл «ifstream» Visual Studio

#include <vector> 
#include <string> 
#include <iostream> 
#include <ifstream> //include is highlighted// Error: cannot open source file "ifstream" 

using namespace std; 

class DictionarySorter{ 
public: 

    DictionarySorter(){ 

    } 
    void readDic(string name){ 
     ifstream dicFile (name); //dicFile is highlighted here// Error: incomplete type is not allowed 

    } 
private: 
    vector<string> v; 


}; 

ответ

7

std::ifstream определяется в заголовке <fstream>. Нет стандартного заголовка <ifstream>.

+0

Я ссылался на учебник Youtube, в котором использовался заголовок ifstream .... Вы правы. – haris

1

C++ ifstream принимает значение c-string как параметр для открытия имени файла. Просто измените name в ifstream dicFile(name); к ifstream dicFile(name.c_str());

Вы также включая библиотеку под названием ifstream, которая не существует. Объект ifstream находится в библиотеке fstream.

+1

Существует также перегрузка, которая принимает 'const std :: string &', поэтому первая часть вашего ответа недействительна. – clcto

+0

@clcto hmm, это должно быть C++ 11 вещь. Я использую 98 для школы в течение нескольких лет и всегда нуждаюсь в использовании '.c_str()' для нормального значения 'string'. –

+0

Справедливо, что [docs] (http://en.cppreference.com/w/cpp/io/basic_ifstream/basic_ifstream) говорят, что C++ 11 на этом конструкторе. – clcto

Смежные вопросы