我的程序的目标是从用户输入的字符串输出新密码。我遇到的问题是根据用户输入分配值,我不能使字母等于数字。我想避免使用" char"分配它。
例如:当用户输入一个字母,例如b
时,它应该具有2
的数字值,并且会打印出2
。或者,用户输入cab
,这将打印出312
。
#include <iostream>
#include <string>
using namespace std;
int main(){
string password;
cin >> password;
password.at()
while (password != "\n")
if (password == a || password == A)
{
password = 1;
}
else if (password == b || password == B)
{
password = 2;
}
else if (password == c || password == C)
{
password = 3;
}
cout << password;
return 0;
}
答案 0 :(得分:1)
在C ++ 11中,可以使用:
for (auto const & char: password) {
switch (char) {
case 'a': case 'A': std::cout << '1'; break;
case 'b': case 'B': std::cout << '2'; break;
case 'c': case 'C': std::cout << '3'; break;
default: /* Do something else */ break;
};
}
或者在早期版本的C ++中:
for (std::size_t i = 0u; i < password.size(); ++i) {
switch (password[i]) {
case 'a': case 'A': std::cout << '1'; break;
case 'b': case 'B': std::cout << '2'; break;
case 'c': case 'C': std::cout << '3'; break;
default: /* Do something else */ break;
};
}
答案 1 :(得分:0)
#include <cctype>
#include <iostream>
#include <string>
int main() {
std::string password;
if (std::getline(std::cin, password))
{
for (const auto character : password)
{
if (std::isalpha(character))
{
const auto integral_value =
static_cast<int>(std::tolower(character) - 'a') + 1;
std::cout << integral_value;
}
}
std::cout << std::endl;
}
return 0;
}