0
中生成函數調用錯誤,嘗試取一個字符串,並使用while循環將小寫字母替換爲特定數字(代碼中明顯的轉換)。在參考與string.replace一直盯着,不能看到我的格式是怎麼錯的string.replace在C++
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int main() {
// set variables
string input_string;
int string_length;
bool isupper;
bool isdig;
int count;
char current_var;
string output_string;
// Query user
cout << "Welcome to Josh's Password Generator. Enter a password and I will convert it into numbers for entry in a touchtone phone." << endl;
cin >> input_string;
// calculations
string_length = (int)input_string.length();
count = 0;
while(count <= string_length)
if (input_string.at(count) == 'a' || input_string.at(count) == 'b' || input_string.at(count) == 'c')
{
current_var = 1;
}
else if (input_string.at(count) == 'd' || input_string.at(count) == 'e' || input_string.at(count) == 'f')
{
current_var = 2;
}
else if (input_string.at(count) == 'g' || input_string.at(count) == 'h' || input_string.at(count) == 'i')
{
current_var = 3;
}
else if (input_string.at(count) == 'j' || input_string.at(count) == 'k' || input_string.at(count) == 'l')
{
current_var = 4;
}
else if (input_string.at(count) == 'm' || input_string.at(count) == 'n' || input_string.at(count) == 'o')
{
current_var = 5;
}
else if (input_string.at(count) == 'p' || input_string.at(count) == 'q' || input_string.at(count) == 'r')
{
current_var = 6;
}
else if (input_string.at(count) == 's' || input_string.at(count) == 't' || input_string.at(count) == 'u')
{
current_var = 7;
}
else if (input_string.at(count) == 'v' || input_string.at(count) == 'w' || input_string.at(count) == 'x')
{
current_var = 8;
}
else if (input_string.at(count) == 'y' || input_string.at(count) == 'z')
{
current_var = 9;
}
else
current_var = input_string.at(count);
input_string = input_string.replace(count, current_var);
count = count + 1;
}
除了這個代碼沒有使密碼不易被猜出,你聽說過什麼'maps'或'switch'? –
'std :: string :: replace'被設計用來代替一個子串與另一個字符串。在這裏,一個簡單的'input_string [count] = current_var;'就足夠了,因爲你只是替換一個字符。 – vu1p3n0x