Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;用数字替换字符_C++_Arrays_String - Fatal编程技术网

C++ c++;用数字替换字符

C++ c++;用数字替换字符,c++,arrays,string,C++,Arrays,String,我有这个密码。我想做的是用指定的数字替换每个字符中的每个字母。比如A是10,以此类推直到J,19。如果我的char数组中只有一个字母,那么我的代码工作得很好,但是如果我有更多的字母,那么它会复制无用的东西。我认为strncat有问题 #include<conio.h> #include <cstring> #include <iostream> using namespace std; int main() { char litera[11]={"A

我有这个密码。我想做的是用指定的数字替换每个字符中的每个字母。比如A是10,以此类推直到J,19。如果我的char数组中只有一个字母,那么我的代码工作得很好,但是如果我有更多的字母,那么它会复制无用的东西。我认为strncat有问题

#include<conio.h>
#include <cstring>
#include <iostream>
using namespace std;

int main()
{
    char litera[11]={"ABCDEFGHIJ"};
    char cifra[11]={"0123456789"};
    char rezultat[256]={0};
    int n;cin>>n;cin.get();
    for(int i=0;i<n;i++)
    { 
        char x[256];
        cin.get(x,256);cin.get();
        int k=strlen(x);
        for(int j=0;j<k;j++)
        {
            int p = strchr(litera,x[j])-litera;  
            if(p>=0 )
            {
                strncat(rezultat, x,j); 
                // my p is the indicator for letter and number
                strcat(rezultat,"1");
                // I'm copying an 1 there because i have numbers 
                // between 10-19 and in my int array i have only
                // the second cipher
                strcpy(x,x+j);
                rezultat[strlen(rezultat)]=cifra[p];
            }
        }
        cout<<rezultat<<endl;
        memset(rezultat,0,sizeof(rezultat));
    }
    getch();
return 0;
}

Input:  07B, 1AA, C8A
Output: 0711, 11010, 12810
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符[11]={“ABCDEFGHIJ”};
字符cifra[11]={“0123456789”};
char rezultat[256]={0};
int n;cin>>n;cin.get();

对于(int i=0;i如果允许使用向量和字符串,那么您可以尝试以下方法(我测试了它,它可以工作。)这里的输入应该是逐行的(每行都是要转换的新字符串),但当然您可以根据您的输入格式修改此部分:

包括:

#include <vector>
#include <iostream>
#include <string>
//#include <conio.h>
//#include <cstring>
//using namespace std;


int main()
{
int n; 
std::cin >> n;

while (n--)
{
    string input;
    std::cin >> input;

    vector<char> resultat;

    for (int i = 0; i < input.size(); i++)
    {
        if (input.at(i) >= 'A' && input.at(i) <= 'J') // it is a letter between A and J
        {
            int number = input.at(i) - 'A' + 10;
            char ones = (char)(((int)'0') + (number % 10));
            char tens = (char)(((int)'0') + (number / 10));

            resultat.push_back(tens);
            resultat.push_back(ones);
        }
        else 
            resultat.push_back(input.at(i));                
    }

    for (int i = 0; i < resultat.size(); i++) 
    {
        std::cout << resultat[i];
    }
    std::cout << endl;
}
}
#包括
#包括
#包括
//#包括
//#包括
//使用名称空间std;
int main()
{
int n;
标准:cin>>n;
而(n--)
{
字符串输入;
std::cin>>输入;
向量结果;
对于(int i=0;i如果(input.at(i)>='A'&&input.at(i)您必须对多个数组执行此操作吗?您可以仅对指定的输入执行切换情况。由于您将字母A-J替换为数字10-19,因此您可以在切换情况下轻松实现此操作。您还可以检查输入是否错误

如果必须使用数组,第一个问题是为什么要用数字数组来表示单个数字?这是约束条件吗?您不能使用:

char cifra[11]={"10","11","12","13","14","15","16","17","18","19"};

相反,对于数组,您可以引用数组索引并使用索引替换它?这样,您可以通过仅使用索引引用替换基于索引的输出来补充数组,例如字母数组的索引1是指数值数组的索引1,即“10”因此,您只需将数组索引值打印到一个变量并将其输出。

尝试过,但在n初始化后,如果没有cin.get();它将无法工作。感谢您的提示,但结果是一样的。我现在正在查看您的循环。很快就会回来!谢谢,我很感激您通过:int p=strchr(litera,x[j])尝试实现的目标-litera;??strchr给出一个指针,指向循环中每个字符的第一次出现。例如,如果litera数组中不再有字符,p将是0或垃圾值,并且不进入if(p)循环。我想我的字符数组中的字符永远不会被删除,我不知道
char cifra[11]={"10","11","12","13","14","15","16","17","18","19"};