【问题标题】:c++ Save output (numbers) into an array. Two numbers at a timec++ 将输出(数字)保存到数组中。一次两个数字
【发布时间】:2015-11-22 09:47:33
【问题描述】:

这是我需要做的: - 用户输入一些大写字母或单词, - 我转过这些字母(我用“obrjen”做了) - 我将这些字母转换为 ASCII 值, - 我将所有这些数字乘以 4, - 我保存值并输出它。比我会做同样的事情,但反之亦然,解密并取回单词

如有任何帮助,谢谢!

void sifriraj(char sifra[100], char obrjen[100], int &velikost3)
{
        int j=99;
            for (int i=0; i<100; i++)
            {
                obrjen[j]=sifra[i];
                j--;
                for (i; i>99-velikost3 && i<100; i++)
                {
                if (obrjen[i]==' ')
                {
                    cout<<"00";
                }
                if (obrjen[i]=='A')
                {
                    cout<<"65";
                }
                else if (obrjen[i]=='B')
                {
                    cout<<"66";
                }
                else if (obrjen[i]=='C')
                {
                    cout<<"67";
                }
                else if (obrjen[i]=='D')
                {
                    cout<<"68";
                }
                else if (obrjen[i]=='E')
                {
                    cout<<"69";
                }
                else if (obrjen[i]=='F')
                {
                    cout<<"70";
                }
                else if (obrjen[i]=='G')
                {
                    cout<<"71";
                }
                else if (obrjen[i]=='H')
                {
                    cout<<"72";
                }
                else if (obrjen[i]=='I')
                {
                    cout<<"73";
                }
                else if (obrjen[i]=='J')
                {
                    cout<<"74";
                }
                else if (obrjen[i]=='K')
                {
                    cout<<"75";
                }
                else if (obrjen[i]=='L')
                {
                    cout<<"76";
                }
                else if (obrjen[i]=='M')
                {
                    cout<<"77";
                }
                else if (obrjen[i]=='N')
                {
                    cout<<"78";
                }
                else if (obrjen[i]=='O')
                {
                    cout<<"79";
                }
                else if (obrjen[i]=='P')
                {
                    cout<<"80";
                }
                else if (obrjen[i]=='R')
                {
                    cout<<"82";
                }
                else if (obrjen[i]=='S')
                {
                    cout<<"83";
                }
                else if (obrjen[i]=='T')
                {
                    cout<<"84";
                }
                else if (obrjen[i]=='U')
                {
                    cout<<"85";
                }
                else if (obrjen[i]=='V')
                {
                    cout<<"86";
                }
                else if (obrjen[i]=='Z')
                {
                    cout<<"90";
                }

                }
            }
            cout<<endl;
}

【问题讨论】:

  • 如果您打印一行数字的代码是 1200 行,那么也许您应该先修复此代码,然后再添加更多功能
  • 该程序是为 17 种不同的功能而设计的。 (一个项目)很抱歉之前没有说明这一点。该程序不仅仅是打印一行。
  • 帮助您不需要查看整个项目,但需要的是查看您如何存储这些数字。您在某些时候将它们打印在屏幕上是无关紧要的
  • @S-K 请阅读如何提供minimal reproducible example
  • 您错过了可以通过static_cast obrjen[i]int 获取ASCII 值的事实。

标签: c++ arrays numbers integer output


【解决方案1】:

要从 char 中获取 ascii 代码,您只需这样做:

char x = 'A';
int  a = x;
std::cout << x << " has ascii code " << a;

因此,正如 LogicStuff 评论的那样,您已经存储了这些数字,您可以将它们用于以后的计算。

【讨论】:

  • 谢谢。结果.push_back(0);?我在'A'中放什么而不是这个?是的,我知道一次总会有 2 个数字。
  • result.push_back(65)
  • 哦.. 对。谢了哥们!不应该有 result.push_back(00);而不是 result.push_back(0);?因为我需要有一个“00”的值?
  • 但是不要这样做!我错过了重点,这些数字是 ascii 值。
  • @S-K 00 作为数字的值是多少?
【解决方案2】:

现在您似乎通过编辑在问题中发布了代码。代码似乎是一些 ASCII 提取。您只需提取每个字符并通过提取运算符将其流式传输到int 变量中。

以前似乎您有一串数字,您想一次解析两个。因此,以下代码不再适用于您的位置。

考虑这段代码:

它需要一个std::string,并一次将保存为无符号整数的两个字符解析为std::vector。您可以将行中的数字输出为字符串并将其提供给此函数。

vector<unsigned int>get_num(string& str)
{
        string::iterator it{str.begin()};
        string::iterator it_end{str.end()};
        vector<unsigned int> out_vector;
        unsigned int val{};
        while(it<it_end)
        {
                string part(it,it+2);
                it+=2;
                istringstream reader(part);
                reader>>val;
                out_vector.push_back(val);
        }
        return out_vector;
}

【讨论】:

  • 他为什么要这样做?请查看 OPs 代码。即使问题/标题另有说明,他也不需要进行任何解析。
  • 谢谢,但我不明白这段代码(我还是初学者),因此我觉得使用它不太舒服:/
  • @tobi303 :哦,现在他发布了一个代码。我在刷新页面之前编写了这段代码。似乎他编辑了这个问题。似乎他正在那里进行某种 ASCII 提取。在这种情况下,您的答案似乎完美而简单。我原本以为他只是想解析一串数字,一次两个字符。
  • 谢谢伙计,我后来确实用代码编辑了这个问题,是的。感谢您的帮助
猜你喜欢
  • 2017-07-26
  • 1970-01-01
  • 2019-06-20
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多