Pig Latin转换器c ++函数

时间:2016-09-09 05:53:09

标签: c++ arrays function

我正在开发一个程序,将某人的名字转换为猪拉丁语,我的代码正在编译并且非常接近工作但是我已经获得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个小时在这上面并且没有到达任何地方。

2 个答案:

答案 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"