将名称转换为数字,然后生成输出

Converting name into numbers, then generate output

本文关键字:然后 后生 输出 数字 转换      更新时间:2023-10-16

好的,我正在使用一个c++类,并试图构建一个控制台程序,用户输入他/她的名字,然后该程序根据用户名的每个字母输出一个新名字。

我正在尝试用字符串来做这件事,但是还没有找到如何正确地将字符串转换为每个字母的和int。

我在这个程序中唯一的东西是每个字符的替换字符串,但是google和stackoverflow没有显示任何我可以应用于我当前的情况。这是我的字符串:

string ninjaName[28] = {"ka", "zu", "mi", "te", "ku", "lu","ji", 
    "ri", "ki", "zu", "me", "ta", "rin", "to", "mo", "no","no", 
    "ke", "shi", "ari", "chi", "do", "ru", "mei", "na", "fu", "zi"};

该字符串代表字母表中的28个字母,并基于"忍者的名字"图片。

我提前感谢你的帮助!

据我所知,您试图使用用户输入的每个字符的ASCII码,并将其替换为另一个字符串。

我个人有两种方法:

  1. 我会维护你在那里的数组。对于用户输入中的每个字符,我将测试它是否是大写/小写字符,如果是,我将相对于ASCII表索引ninjaName数组。

的例子:

#include <ctype.h>
#include <iostream>
#include <string>
std::string ninjaName[28] = {"ka", "zu", "mi", "te", "ku", "lu","ji", 
    "ri", "ki", "zu", "me", "ta", "rin", "to", "mo", "no","no", 
    "ke", "shi", "ari", "chi", "do", "ru", "mei", "na", "fu", "zi"};
int main(void)
{
    std::string input, newName;
    std::getline(std::cin,input);
    newName = "";
    char c; 
    for(unsigned int i=0; i < input.length(); ++i)
    {
        c = input[i];
        if (!isalpha(c))
            newName += c;
        else
            newName += ninjaName[tolower(c) - 'a'];     
    }
    std::cout << "Generated name: " << newName << std::endl; 
    std::cin.get();
    return 0;
}

Google ASCII表。

另一个解决方案是使用std::map,但是在性能和简单性方面,上面的解决方案更好。

    #include<iostream>
#include <string>
using namespace std;
string ninjaName[28] = {"ka", "zu", "mi", "te", "ku", "lu","ji", 
"ri", "ki", "zu", "me", "ta", "rin", "to", "mo", "no","no", 
"ke", "shi", "ari", "chi", "do", "ru", "mei", "na", "fu", "zi"};
int main()
{
    string name,outstr;
    int cindex=0;
    cout << "Enter Your Name:t";
    cin >> name;
    size_t sz = name.size();
    for (int i = 0; i < sz; i++)
    {
        if(!isalpha(name[i]))
        {
            outstr+=name[i];
            continue;
        }
        cindex = tolower(name[i])-'a';
        outstr.append(ninjaName[cindex]);
    }
    cout << "nyour new Ninja Name is:t" <<outstr << "n";
    return 0;
}

这主要是在C中,而不是c++中,但是它做了我认为你正在寻找的。
string是一个字符数组,而char只是一个数字。

编辑
将代码更新为c++,从而修复了James Kanze指出的问题

相关文章: