2016-03-16 2 views
-4

Опухоль мой мозг. Я слежу за документацией, и я все еще не могу заставить это работать. Строка «inputString» ничего не возвращает при запуске программы. да, файл «A3Q2.dat» находится в том же каталоге, что и main.cpp. oh yeah и std namespace - это требование для моего класса, иначе я бы не использовал его. Спасибо!не может вводить файл в программу C++

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

using namespace std; 

int main() { 

    // new variables 

    ifstream inFile; 
    string fileName = "A3Q2.dat"; 
    string inputString; 

    // Query user 

    inFile.open(fileName.c_str(), ifstream::in); 

    inFile >> inputString; 

    cout << inputString; 


    return 0; 
} 
+1

Является ли файл данных в том же каталоге, с которого вы запускаете исполняемый файл? –

+3

PS: Почему бы не проверить, успешно ли вы открыли файл? –

+3

Попробуйте вывести ошибку, если 'inFile.is_open()' возвращает false после открытия файла. Либо файл не находится в вашей программе (текущий рабочий каталог), либо файл заблокирован или не имеет разрешения на чтение. Или он не содержит никаких символов без пробелов;) – paddy

ответ

0

Я пытаюсь использовать свой код и он работает хорошо, если вы поместите файл A3Q2.dat не в том же каталоге вашего * .exe, но в другом каталоге (также одного и того же проекта). Однако я предлагаю вам взглянуть на приведенный ниже код, чтобы правильно использовать исключение.

// new variables 
string fileName = "..//A3Q2.dat"; 
ifstream inFile(fileName); 
string inputString; 

try 
{ 
    while (getline(inFile, inputString)) 
    { 
     cout << inputString; 
    } 
    cin >> inputString; 

    inFile.close(); 
} 
catch (exception ex) 
{ 
    cout << ex.what(); 
} 

return 0;