2013-11-19 3 views
-1

Я пишу эту программу Pig Latin, чтобы преобразовать английский язык в свинчивый латинский язык, и у меня возникли проблемы с реализацией файла read, а затем вывод его в другой файл txt.C++ ifstream ofstream реализация?

Это то, что я до сих пор, но он не будет компилировать из

outputFile << pigLatin(englishWord) << ' '; 

Вот исходный код. Любое предложение заставить его работать? Благодаря

void pigLatin(string englishWord) 
{ 
string piglatinWord; 
bool truefalse = false; 
int letter = 0, wordLength = englishWord.length(); 

while (!truefalse && letter < wordLength) 
    { 
    if (englishWord.substr(letter,1) == "a" || englishWord.substr(letter,1) == "e" ||englishWord.substr(letter,1) == "i" || englishWord.substr(letter,1) == "o" || englishWord.substr(letter,1) == "u") 
     truefalse = true; 
    else 
     letter++; 
    } 
if (letter > wordLength) 
    piglatinWord = englishWord + "-way "; 
else 
piglatinWord = englishWord.substr(letter, wordLength-letter) + englishWord.substr(0,letter)+ "-ay " ; 
cout << piglatinWord; 
} 

int main() 
{ 
ifstream inputFile; 
inputFile.open("PigLatinIn.txt"); 
ofstream outputFile; 
outputFile.open("PigLatinOut.txt"); 
string englishWord, engWords; 
bool done = false; 
int location; 

while(!inputFile.eof()) 
{ 
    string englishWord; 
    inputFile >> englishWord; 
    outputFile << pigLatin(englishWord) << ' '; 
} 

{ 
while (!done) 
    { 
    location = engWords.find(" "); 
    if (location == -1) 
     { 
     done = true; 
     location = engWords.length(); 
     } 
    englishWord = engWords.substr(0, location); 
    pigLatin(englishWord); 

    if (!done) 
     engWords = engWords.substr(location + 1, engWords.length() - location + 1); 
    } 
} 
cout << endl; 
inputFile.close(); 
outputFile.close(); 
return 0; 
} 
+3

'pigLatin' возвращается' недействительной '(иначе ничего). 'Ifstream' не знает, как записать' void' в файл. – Marius

+0

Хорошо, я сменил PigLatin() на возврат строки, а затем вернул ему английский текст. Это очистило ошибку. – Simsyy

ответ

7

Ваш pigLatin функция имеет void для типа возвращаемого значения, так что все, что вы могли бы написать в ofstream не возвращаются:

outputFile << pigLatin(englishWord) << ' '; 

Изменить тип возвращаемого pigLatin к std::string и добавить

return piglatinWord; 

в конце функции:

string pigLatin(string englishWord) 
{ 
    // ... implementation here 
    return piglatinWord; 
} 

Кроме того, чтобы сделать вашу функцию более ясно и равномерной, я хотел бы предложить вам удалить cout << piglatinWord; из функции и вывести возвращаемое значение в функции вызывающего абонента:

englishWord = engWords.substr(0, location); 
cout << pigLatin(englishWord); 
+1

Спасибо, как только Мариус указал на это, я изменил тип возврата, построил его, забыл, что мне нужно добавить возврат, а затем вернулся сюда, чтобы увидеть это обновление на странице. Спасибо за визуальное представление! – Simsyy

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