将名称转换为数字,然后生成输出
Converting name into numbers, then generate output
好的,我正在使用一个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码,并将其替换为另一个字符串。
我个人有两种方法:
- 我会维护你在那里的数组。对于用户输入中的每个字符,我将测试它是否是大写/小写字符,如果是,我将相对于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指出的问题
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- boost::asio如何生成多个协同程序,然后加入它们
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 在std::thread中,joinable()然后join()线程安全吗
- C++:如何读取分离变量,然后读取向量
- 为什么我的递归函数按降序打印,然后按升序打印?
- 等待整个 omp 块完成,然后再调用第二个函数
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 如何使变量从 x 到 y,然后从 y 返回到 x 并始终重复该过程
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 如何正确地推回然后遍历堆中对象的向量?
- 我似乎无法为指针分配一个数组,然后更改数组的内容
- 如何在字符串中找到字符,然后在C++中提取其余的字符串
- 首先按给定顺序打印所有数字,然后使用 Array 打印所有字符和其他符号
- 将加密消息从 php 发送到 C++ 应用程序,然后使用 CryptoPP 进行解密
- 如何为 std::vector 分配内存,然后稍后为某些元素调用构造函数?