Программа будет отображать одну часть вывода, но отсутствует вторая часть.
Моя программа должна отображать содержимое введенного пользователем файла, что она и делает. Проблема в том, что он не отображает вторую часть, где он заменяет "пробел" словом, введенным пользователем. Он даже не предлагает пользователю ввести новое слово. Если кто-нибудь может помочь, спасибо.
Вот мой код:
/* Program: prog5B.cpp By: Mackenzie Ritter Last Modified: Nov 23, 2017 Purpose: To produce a filled out madlibs with users help. Notes: */ #include <fstream> #include <iostream> #include <string> #include <sstream> using namespace std ; string openInfile (ifstream&) ; void openOutfile (ofstream&) ; void change (string&, string&, string) ; int main () { string line = " " ; string word = " " ; string diffLine = " " ; ifstream ins ; //ins is an input stream ofstream outs ; // outs is an output stream line = openInfile (ins) ; istringstream iss (line) ; while (getline(ins, line)) { while (iss >> word) { change (word, diffLine, line) ; } cout << line << endl ; cout << diffLine << endl ; } ins.close () ; outs.close () ; cin.ignore () ; return 0 ; } /* Function: openInfile Last Modified: Nov 23, 2017 Purpose: Opens the input file after getting file name from user. In Parameters: None Out Parameters: string fileName Return Value: None */ string openInfile (ifstream& ins) { string fileName = " " ; string line = " " ; ofstream outs ; // outs is an output stream cout << "Enter file of madlibs outline." << endl ; cin >> fileName ; ins.open(fileName.c_str()) ; //connects ins to file inFile if (ins.fail()) { cerr << "Error: Unable to open file : " << fileName << endl ; } else { openOutfile (outs) ; } return line ; } /* Function: openOutfile Last Modified: Nov 23, 2017 Purpose: Opens the output file after getting file name from user. In Parameters: None Out Parameters: string copyFile Return Value: None */ void openOutfile (ofstream& outs) { string copyFile = " " ; cout << "Enter name of file for updated data." << endl ; cin >> copyFile ; outs.open(copyFile.c_str()) ; } /* Function: change Last Modified: Nov 23, 2017 Purpose: Replaces blanks with words from user. In Parameters: string word, diffLine Out Parameters: string fileName Return Value: None */ void change (string&word, string&diffLine, string line) { string searchN = "blank-N" ; string searchA = "blank-A" ; string searchV = "blank-V" ; string searchP = "blank-P" ; string searchD = "blank-D" ; string noun, adjective, verb, place, adverb ; if (word == searchN) { cout << "Enter a noun." << endl ; cin >> noun ; diffLine = diffLine + noun + " " ; } else if (word == searchA) { cout << "Enter an adjective." << endl ; cin >> adjective ; diffLine = diffLine + noun + " " ; } else if (word == searchV) { cout << "Enter a verb." << endl ; cin >> verb ; diffLine = diffLine + noun + " " ; } else if (word == searchP) { cout << "Enter a place." << endl ; cin >> place ; diffLine = diffLine + noun + " " ; } else if (word == searchD) { cout << "Enter an adverb." << endl ; cin >> adverb ; diffLine = diffLine + noun + " " ; } else { diffLine = diffLine + word + ' ' ; } }
Что я уже пробовал:
Я так много просил своего учителя о помощи, и я действительно изменил некоторые вещи в соответствии с тем, что он сказал, но все равно программа не работает.
cvogt61457
Пора познакомиться с вашим самым полезным инструментом-отладчиком.
Это твой друг.
Научитесь им пользоваться.
С помощью отладчика вы сможете шагать по программе и видеть, что происходит во время выполнения.
Есть ли какие-либо ошибки компиляции или предупреждения, которые вы игнорируете?
Ну, просто быстро взглянув, вы объявили 2 переменные под названием "outs" - одну в main и одну в openInfile.
openInfile вызывает openOutfile.
Однако переменная outs в main должна использоваться для записи файла, но она никогда не устанавливается/инициализируется/используется.
Какая часть отображается? Какая часть не отображается?
Richard MacCutchan
Ваш призыв к openInfile
возвращает пустую строку. И он не запрашивает у пользователя слово, так как ключ, который вы отправляете в функцию изменения, является пустым. Структура вашей программы выглядит не очень логично, и ее довольно трудно понять.
Member 13479017
Файл in отображается, но некоторые слова должны быть изменены и скопированы в файл out. Этого не происходит, и после исходных строк ничего не отображается.