我正在开发一个程序,将某人的名字转换为猪拉丁语,我的代码正在编译并且非常接近工作但是我已经获得main()
并且无法编辑。以下是我的代码:
#include <iostream>
#include <string>
using namespace std;
void convertToPigLatin(string& name);
void lowercase(string& name);
int main()
{
string first = "Trevor";
string last = "Chappel";
string fullname;
convertToPigLatin(first);
convertToPigLatin(last);
fullname = first + " " + last;
cout << "Your name in pig latin is: " << fullname << endl;
}
void convertToPigLatin(string & name)
{
// begins with vowel.
if (name[0] == 'a' || name[0] == 'e' || name[0] == 'i' || name[0] == 'o' ||
name[0] == 'u' || name[0] == 'A' || name[0] == 'E' || name[0] == 'I' || name[0] == 'O' || name[0] == 'U')
{
// Add "way" to the end.
name[0] = toupper(name[0]);
cout << name << "way ";
}
// It begins with a consonant. Move it to the end and add "ay"
else
{
name[0] = tolower(name[0]);
name += name[0];
name.erase(0, 1);
name[0] = toupper(name[0]);
cout << name << "ay ";
}
}
void lowercase(string& name)
{
int i = 1;
while (name[i] != '\0')
{
name[i] = tolower(name[i]);
i++;
}
}
我的输出是Revortay Happelcay Your name in pig latin is: Trevor Chappel
并且所需的输出为Your name in pig latin is: Evortray Appelchay
。
所以你可以看到它很接近。我已经花了4个小时在这上面并且没有到达任何地方。
答案 0 :(得分:0)
您正在错误地使用cout。 cout是一个访问stdout的对象。 string :: append()可能是你想要查找的函数。
答案 1 :(得分:0)
你的问题在于:
// begins with vowel.
if (name[0] == 'a' || name[0] == 'e' || name[0] == 'i' || name[0] == 'o' ||
name[0] == 'u' || name[0] == 'A' || name[0] == 'E' || name[0] == 'I' || name[0] == 'O' || name[0] == 'U')
{
// Add "way" to the end.
name[0] = toupper(name[0]);
cout << name << "way ";
}
您使用cout
打印出名称,但实际上并未在字符串中添加“方式”。
此外,当您执行以下操作时,您可以使这种方式更顺畅:
// checks if the character 'c' is a vowel and returns either true of false
bool is_vowel(char c)
{
c = tolower(c);
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
// returns a new pig-latin string
string getPigLatinName(string name)
{
if(is_vowel(name[0]))
{
return name.append("way");
}
else
{
// TODO: implement me yourself
}
}
所以你可以这样使用:
string name("albert"); // now name == "albert"
name = getPigLatinName(name); // now name == "albertway"