C++ C+中的暴力角色生成+;
所以我尝试制作一个蛮力字符串生成器来匹配和比较CUDA中的字符串。在我开始尝试用一种语言来解决问题之前,我不知道我想用C++来做一个工作。我现在有这个代码C++ C+中的暴力角色生成+;,c++,string,character,brute-force,C++,String,Character,Brute Force,所以我尝试制作一个蛮力字符串生成器来匹配和比较CUDA中的字符串。在我开始尝试用一种语言来解决问题之前,我不知道我想用C++来做一个工作。我现在有这个代码 #include <iostream> #include <string> #include <cstdlib> using namespace std; int sLength = 0; int count = 0; int charReset = 0; int stop = 0; int maxV
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int sLength = 0;
int count = 0;
int charReset = 0;
int stop = 0;
int maxValue = 0;
string inString = "";
static const char charSet[] = //define character set to draw from
"0123456789"
"!@#$%^&*"
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int stringLength = sizeof(charSet) - 1;
char genChars()
{
return charSet[count]; //Get character and send to genChars()
}
int main()
{
cout << "Length of string to match?" << endl;
cin >> sLength;
cout << "What string do you want to match?" << endl;
cin >> inString;
string sMatch(sLength, ' ');
while(true)
{
for (int y = 0; y < sLength; y++)
{
sMatch[y] = genChars(); //get the characters
cout << sMatch[y];
if (count == 74)
{
charReset + 1;
count = 0;
}
if (count == 2147000000)
{
count == 0;
maxValue++;
}
}
count++;
if (sMatch == inString) //check for string match
{
cout << endl;
cout << "It took " << count + (charReset * 74) + (maxValue*2147000000) << " randomly generated characters to match the strings." << endl;
cin >> stop;
}
cout << endl;
}
}
#包括
#包括
#包括
使用名称空间std;
int sLength=0;
整数计数=0;
int charReset=0;
int stop=0;
int maxValue=0;
字符串inString=“”;
static const char charSet[]=//定义要从中绘制的字符集
"0123456789"
"!@#$%^&*"
“abcdefghijklmnopqrstuvwxyz”
“ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
int stringLength=sizeof(字符集)-1;
char genChars()
{
返回字符集[count];//获取字符并发送到genChars()
}
int main()
{
coutslength;
cout inString;
字符串匹配(长度,,);
while(true)
{
对于(int y=0;y cout您基本上只需要增加一个计数器,然后将计数转换为基数(字符数组的大小)
下面是一个例子,它可以计算以16为底的正常数
你应该能够替换
char NUMS[] = "0123456789ABCDEF";
这可能无法使用uint生成足够大的字符串,但您应该能够从那里将其分解为块
假设您的字符数组是“BAR”,因此您希望使用自己的符号而不是0 1和2将其转换为基数为3的数字
这样做的目的是执行一个模数来确定字符,然后除以基数,直到数字变为零。您要做的是重复“B”,直到达到字符串长度,而不是在达到零时停止
例如:由数字13生成的四个字符的字符串:
- 14%3=2,因此它会将字符集[2]推到空字符串“R”的开头
- 然后它将除以3,使用整数数学将=4。4%3又是1,所以“A”
- 它将再次除以3,(1)1%3是1,所以“A”
- 它将再次除以3,(0)--示例将停止在这里,但由于我们正在生成一个字符串,我们继续按0“B”,直到达到4个字符
最终输出:BAAR
对于可以生成更大字符串的方法,可以使用字符串大小的整数数组(称之为positions
),将所有整数初始化为零,并在每次迭代中执行类似操作:
i = 0;
positions[i]++;
while (positions[i] == base)
{
positions[i] = 0;
positions[++i]++;
}
然后,您将遍历整个数组,并使用字符集[positions[i]]构建字符串,以确定每个字符是什么。您基本上只需要增加一个计数器,然后将计数转换为基数(字符数组的大小)
下面是一个例子,它可以计算以16为底的正常数
你应该能够替换
char NUMS[] = "0123456789ABCDEF";
这可能无法使用uint生成足够大的字符串,但您应该能够从那里将其分解为块
假设您的字符数组是“BAR”,因此您希望使用自己的符号而不是0 1和2将其转换为基数为3的数字
这样做的目的是执行一个模数来确定字符,然后除以基数,直到数字变为零。您要做的是重复“B”,直到达到字符串长度,而不是在达到零时停止
例如:由数字13生成的四个字符的字符串:
- 14%3=2,因此它会将字符集[2]推到空字符串“R”的开头
- 然后它将除以3,使用整数数学将=4。4%3又是1,所以“A”
- 它将再次除以3,(1)1%3是1,所以“A”
- 它将再次除以3,(0)--示例将停止在这里,但由于我们正在生成一个字符串,我们继续按0“B”,直到达到4个字符
最终输出:BAAR
对于可以生成更大字符串的方法,可以使用字符串大小的整数数组(称之为positions
),将所有整数初始化为零,并在每次迭代中执行类似操作:
i = 0;
positions[i]++;
while (positions[i] == base)
{
positions[i] = 0;
positions[++i]++;
}
然后你会遍历整个数组,然后用字符集[S]来建立字符串来确定每个字符是什么。< /P>我是C++的新手(在一个月内几乎没有使用它)我不知道该代码是怎么做的,或者我不知道如何修改它,我主要是提倡一种通用的方法。我试着给它添加一个解释它是如何工作的。我是C++新手(几乎不在一个月内使用它)。。我不知道该代码做什么,也不知道如何修改它来与我的代码一起工作。我主要提倡一种通用的方法。我试图添加一个解释它是如何工作的。你把count==0;在你的代码中,这没有任何作用。我不知道这是否是问题所在,但count=0;我认为你的意思是你把count==0;在你的代码中,这是我不知道这是不是问题,但我认为你的意思是计数=0