C++ 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

所以我尝试制作一个蛮力字符串生成器来匹配和比较CUDA中的字符串。在我开始尝试用一种语言来解决问题之前,我不知道我想用C++来做一个工作。我现在有这个代码

#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;ycout您基本上只需要增加一个计数器,然后将计数转换为基数(字符数组的大小)

下面是一个例子,它可以计算以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