我正在將字符傳遞到字符串中並使用函數混淆字符串中的字母,但是從主頂部的數組中抓取的字符正在作爲符號的重音符號打印並且數字的%符號,但是字母不受影響。幫助表示讚賞:)打印奇怪值的特殊字符和數字字符
#include <iostream>
#include <string>
using namespace std;
void scrambleString(string str)
{
int x = str.length();
for (int y = x; y > 0; y--)
{
int pos = rand() % x;
char tmp = str[y - 1];
str[y - 1] = str[pos];
str[pos] = tmp;
}
cout << str;
}
int main()
{
// Arrays for RNG to work with //
char letters[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
char symbols[] = { '!', '£', '$', '%', '&', '*', '@', '~' };
char numbers[] = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
// Other Variables //
int letterIn;
int specialIn;
int numberIn;
string randomPass;
string holdString;
cout << "No of Letters: ";
cin >> letterIn;
cout << "No of Special char: ";
cin >> specialIn;
cout << "No of Numbers: ";
cin >> numberIn;
// Letters
for (int i = 0; i < letterIn; i++)
{
int RNG = rand() % 26;
char holdChar = letters[RNG];
// Convert to String
holdString.insert(i, 1, holdChar);
}
// Symbols
for (int i = 0; i < specialIn; i++)
{
int RNG = rand() % 8;
char holdChar = symbols[RNG];
// Convert to String
holdString.insert(letterIn, 1, holdChar);
}
// Numbers
for (int i = 0; i < numberIn; i++)
{
int RNG = rand() % 8;
char holdChar = symbols[RNG];
// Convert to String
holdString.insert(letterIn+specialIn, 1, holdChar);
}
cout << holdString << endl;
scrambleString(holdString);
}
請問您可以發佈一個示例輸出嗎? –
請注意,''''沒有在ASCII中定義;這個字符可能需要很寬才能正確解釋爲Unicode。爲了簡單起見,最好完全省略它。 – cdhowie
這個例子產生我期望的輸出,如果我省略''''''並且減少'//符號'中的模匹配。考慮使用'sizeof'而不是常量。 –