需要我在Character中的当前输出,它是C ++中的int值

时间:2017-04-11 16:55:42

标签: c++

d[i] = char(c[i]);

在以下示例中,这对我不起作用。

我需要将输出转换为其字符值,但在使用char(int)后,它仍然仅使用int数据类型提供输出。

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string str;
    cin>>str;
    int size=str.size();
    int len=0;
    if (size % 2 == 0)
    {
        len=size/2;
    }
    else
    {
        len=(size/2)+1;
    }
    int a[len],b[len],c[len],d[len],x,y;
    int i=0,j=size-1;
    while(i<len)
    {
        x=(int)str[i];
        y=(int)str[j];
        if (i == j)
        {
            a[i]=x;
        }
        else
        {
            a[i]=x+y;
        }
        b[i]=a[i]%26;
        c[i]=x + b[i];
        d[i]=char(c[i]);
        cout<<"l : "<<d[i]<<endl;
        i++;
        j--;
    }
    return 0;
  }

1 个答案:

答案 0 :(得分:0)

您的代码失败,因为您将值存储在int[]数组中。 d[i]=char(c[i]);没用,因为您所做的只是将int转换为char再转换回int。然后,您将按原样输出数组值为int值,而不是将它们转换回实际的char值。

尝试更像这样的东西:

#include <vector>
#include <string>

using namespace std;

int main()
{
    string str;
    cin >> str;

    int size = str.size();
    int len = (size / 2) + (size % 2);

    // VLAs are a non-standard compiler extension are are not portable!
    // Use new[] or std::vector for portable dynamic arrays...
    //
    // int a[len], b[len], c[len];
    // char d[len];
    //
    std::vector<int> a(len), b(len), c(len);
    std::vector<char> d(len);

    int x, y, i = 0, j = (size-1);

    while (i < len)
    {
        x = (int) str[i];
        y = (int) str[j];

        if (i == j)
        {
            a[i] = x;
        }
        else
        {
            a[i] = x + y;
        }

        b[i] = a[i] % 26;
        c[i] = x + b[i];
        d[i] = (char) c[i];

        cout << "l : " << d[i] << endl;

        ++i;
        --j;
    }

    return 0;
}