Давайте рассмотрим это как две проблемы.
Задача 1: чтение в файле.
Я раздели все, что не является абсолютно необходимым для чтения данных в.
char input[100]; //Used to check grammar
int main(int argc, char *argv[]) {
ifstream fin("input.txt"); //Open input file
while (fin>>input) { //Store text in input[]
cout<<"String read from file: "<<input<<endl; //Show input text
}
return 0;
}
Ничего особенного здесь не так, но вы должны серьезно рассмотреть вопрос о замене char input[100];
с std::string input;
, чтобы спасти Вас от головной боли с большими лексем , Например, посмотреть, что здесь происходит:
int main()
{
stringstream stream("1234567890"); // pack ten characters into stream
// note: no whitespace.
char snookums[] = "snookums";
char array[5];
cout << snookums << endl; // prove contents of snookums
stream >> array; // read up to first whitespace from stream into array
cout << array << endl; // display what we read.
cout << snookums << endl; // oh dear. Now look at poor snookums!
return 0;
}
выход:
snookums
1234567890
67890
Несмотря на массив будучи размер 5, он содержит все 10. Или же это? Неа. К сожалению, бедные снукумы перебежали. Это не произойдет со строками.
Для всех, кого мы знаем fin>>input
, просто введите 30000 символов из файла без пробелов, уничтожив остальную память вашей программы, и программа умерла, прежде чем распечатать что-либо.
Во всяком случае, ваш код оставляет несколько вопросов:
Are вы на самом деле в состоянии открыть файл? На самом деле ты не знаешь. Вы никогда не проверяли.
Был ли этот файл пустым? Также не знаю. Вы не сказали нам. Это одна из тех вещей, о которых люди начинают рассказывать в комментариях.
Ничего из этого не исправляет, но, надеюсь, дает вам представление о том, что происходит не так.
string input; // using string in case the data you're reading is incompatible
//with a 100 character char array.
int main(int argc, char *argv[]) {
ifstream fin("input.txt"); //Open input file
if (fin.is_open()
{
while (fin>>input)
{ //Store text in input
cout<<"String read from file: "<<input<<endl; //Show input text
}
}
else
{
cout << "Failed to open file." << endl;
}
return 0;
}
Как только вы знаете, действительно ли вы читаете данные, а если нет, почему бы и нет.
Задача 2: анализ языка.
Мы не можем помочь вам здесь. Никакой информации не было предоставлено, но несколько заметок о стиле кодирования, потому что они помогут вам задать будущие вопросы:
A()
не имеет смысла для всех, кроме вас. Дайте ему описательное имя, чтобы кто-то, кроме вас, имел некоторые подсказки о том, что он делает. A()
не принимает параметров. Я предполагаю, что это потому, что он работает на input
. Хорошо, но почему бы не пройти input
? Стоимость минимальна и предоставляет читателям больше информации. Обратите внимание, как комментаторы обнулили на A()
сразу? Это страх. Хороший вид страха. У нас нет [insert expletive here] понять, что это такое или что он делает, поэтому он мгновенно анализируется.
A(input)
читает мне как «A делает что-то для ввода». Я не знаю, что он делает, но он делает это до input
. Если у писателя программы нет истории глупостей, она, вероятно, только делает материал до input
, и мне не нужно бояться этой функции почти так же.
LanguageInterpreter()
говорит мне, что был запущен переводчик языка. Не много, но если я ищу ошибку в коде чтения файла, я вряд ли найду его там. К сожалению, это также говорит мне, что LanguageInterpreter празднует глобальные данные, и Кром знает, какие побочные эффекты он может иметь для остальной части программы.
LanguageInterpretter(input)
говорит мне много. С одной стороны, он говорит мне, что я могу продолжать свой день, потому что это не имеет никакого отношения к тому, что я читал в файле данных. Сначала я проверю другие места на наличие ошибок.
Добро пожаловать в StackOverflow. Пожалуйста, уделите немного времени, чтобы прочитать рекомендации о том, как писать приемлемые вопросы в [help]. «Как спросить» и «MVCE» важны. Ключевой элемент, отсутствующий в вашем вопросе, поскольку он стоит ... в чем ваш вопрос? Каковы симптомы проблемы? Что вы ожидали? – GreenAsJade
Да, сэр, я очень новичок в этом форуме и задаюсь вопросом, может ли кто-нибудь помочь мне просто знать, как разбираться с текстовым файлом. –
Что делает 'A()' do? Вы не показываете код для этого. –