2015-09-09 2 views
0

у меня есть программа я пытаюсь скомпилировать на GCC, хотя появляется эта ошибка: ошибка: нет подходящей функции для вызова «станд :: basic_ifstream> :: разомкнут (станд :: строка &)»Компиляция в НКУ

Вот мой код:

#include <iostream> 
#include <fstream> 
#include <string> 
#include <cmath> 

using namespace std; 
int main() { 

    int column, row, total, counter; 
    column = 1; 
    row = 1; 


    cout << "x-dimensions of array: "; 
    cin >> row; 
    cout << "y-dimensions of array: "; 
    cin >> column; 
    total = row*column; 
    double myArray[row][column]; 
    double *myPtr; 
    myPtr = *myArray; 



    string input; 
    cout << "Enter text file name: "; 
    cin >> input; 

    ifstream inFile; 
    inFile.open(input); 

    //Check for Error 
    if (inFile.fail()){ 
     cerr << "Error opening file" << endl; 
     exit(1); 
    } 

    for (int i = 0; i < total; i++){ 

     inFile >> *(myPtr+i); 
} 

я считаю, что ошибка связана с входной_файл строкой используется, но я объявил Надлежащие заголовки

+2

Почему не просто 'std :: ifstream file (input)'? – CoffeeandCode

+1

Какова команда, которую вы используете для компиляции? – ilent2

+1

Вы используете 'gcc' или' g ++ '? Это код C++, поэтому правильным компилятором является 'g ++'. – zstewart

ответ

2

до C++ 11 вам нужно пропускать C в строку std::ifstream::open. Вы можете получить строку стиля C из строки C++ с помощью функции std::string::c_str, рассмотрите возможность использования inFile.open(input.c_str()). Однако, если вы используете C++ 11, это не имеет значения.

Вы также можете получать ошибку о не объявлении функции exit, вы можете добавить #include <cstdlib> с другой включает в верхней части файла, в противном случае рассмотреть только с помощью return 1 в данном случае.

Вам также необходимо убедиться, что вы используете компилятор C++ из коллекции компиляторов GCC, как правило, вы должны использовать что-то вроде g++ input.cpp -o output или g++ --std=c++11 input.cpp -o output, чтобы включить C++ 11.

+0

Нет: http://en.cppreference.com/w/cpp/io/basic_ifstream/open –

+2

@ KeillЯandor ?? В C++ 11 вы можете использовать строку, но в противном случае вам понадобится 'char *'. – ilent2

+0

@ KeillЯandor У меня была опечатка несколько секунд назад, если вы прокомментировали это до моего редактирования, я понимаю, но в противном случае я не вижу, что случилось? – ilent2

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