строка — функция PigLatin C ++

Этот код дает мне много странных ошибок. По какой-то причине функция «newstring» не работает. Я думаю, что это может быть связано с тем фактом, что оно является частью оператора cout, потому что, если я правильно помню, оно не выдает такую ​​же ошибку, если я вызываю функцию независимо от оператора cout. Программа требует строковую функцию, но новая функция по какой-то причине не работает. Может ли кто-нибудь взглянуть на код?

    #include <iostream>
#include <string>

using namespace std;

void newstring(string);
bool isVowel(char ch);
string rotate(string pStr);
string pigLatinString(string pStr);

int main()
{
string str;

cout << "Enter a sentence to be translated to Pig Latin: ";
getline(cin, str);
cout << endl;

cout << "The pig Latin form of " << str << " is: " << newstring(str);

system("PAUSE");
return 0;

}

bool isVowel(char ch)
{
switch(ch)
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'Y':
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
return true;
default:
return false;
}
}
string rotate(string pStr)
{
string::size_type len = pStr.length();
string rStr;
rStr = pStr.substr(1, len - 1) + pStr[0];
return rStr;
}
string pigLatinString(string pStr)
{
string :: size_type len;
bool foundVowel;
if (isVowel(pStr[0]))
pStr = pStr + "-way";
else
{
pStr = pStr + '-';
pStr = rotate(pStr);
len = pStr.length();
foundVowel = false;

for ( int counter = 1; counter < len - 1; counter++)
{
if (isVowel(pStr[0]))
{
foundVowel = true;
break;
}
else
pStr = rotate(pStr);

if (!foundVowel)
pStr = pStr.substr(1, len) + "-way";
else
pStr = pStr + "ay";
}
return pStr;
}
}

string newstring(string sentence)
{
string newsentence, currentword;

for (int i = 0; i < sentence.length(); i++)
{
if (sentence[i]==' ')
{
pigLatinString(currentword)+" ";
currentword.clear();
}
else
{
currentword+=sentence[i];
}
}
return newsentence;
}

-2

Решение

Ваш newstring прототип не так.

void newstring(string);

Должно быть

string newstring(string);
1

Другие решения

Функция newstring объявлена ​​как имеющая тип void

void newstring(string);

Вы не можете создавать объекты типа void и отправлять их в выходной поток

cout << "The pig Latin form of " << str << " is: " << newstring(str);

Также у функции нет определения, потому что вы определили другую функцию с тем же именем, но возвращающую std :: string

string newstring(string sentence)
^^^^^^^^^^^^^^^^^^
0

pigLatinString(currentword)+" ";

pigLatinString возвращает строку, но вы ничего не делаете с этим результатом.

newstring возвращает newsentence, но является пустым.

Может быть, вам следует заполнить newsentence тем, что возвращается из pigLatinString?

Ох, и теперь я заметил, что у вас есть два newstrings … пустота и строка …

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector