数组:将字符串数组的索引传递给Int数组的索引仅用于输出

时间:2012-04-01 20:23:43

标签: c++ arrays

我希望将数组的int值传递给“幕后”字符串数组的索引。我希望字符串数组与其字符串一起输出,但是我想对字符串所代表的索引进行数学运算。

换句话说,我想将它们组合或混合在一起,这样我就有4个数组:其中2个是int数组,1个int数组用于数学运算;其中2个是字符串数组,它们都只用于显示屏幕。

如果我尝试遍历int数组并将字符串数组元素分配给它们对应的索引,它将无法编译,我收到错误消息: “无法在赋值时将'std :: string'转换为'int'。”

如果我尝试遍历字符串数组并将int数组值分配给它们对应的索引,那么它会编译,但是我得到int值的ASCII表示,而不是数字。 这是循环遍历int数组的代码:

#include <iostream> 

using namespace std;

int main()          
{   

int typeArray[4] = {55,66,77,88};
int valArray[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};

string types[4] = {"Manny", "Moe", "Jack", "John" };
string values[13] =    {"One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten",
                      "Eleven","Twelve","Thirteen"};

for (int i = 0; i < sizeof(typeArray)/sizeof(int); i++)
  {
    for (int j = 0; j < sizeof(valArray)/sizeof(int); j++)
    {

        typeArray[i] = types[0];
        valArray[j] = values[0];
        }
  }

  system("Pause");
  return 0; 
}

再说一遍,它不会编译,我会收到上面提到的错误信息。 这是循环字符串数组和输出的代码:

#include <iostream> 

using namespace std;

int main()          
{   

int typeArray[4] = {55,66,77,88};
int valArray[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};

string types[4] = {"Manny", "Moe", "Jack", "John" };
string values[13] = {"One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten",
                      "Eleven","Twelve","Thirteen"};

    for (int i = 0; i < sizeof(types)/sizeof(int); i++)
     {
    for (int j = 0; j < sizeof(values)/sizeof(int); j++)
      {

        types[i] = typeArray[0];
        values[j] = valArray[0];

        cout << "This is types array: " << types[i] << "  This is values array: " << values[j] << endl;
      }
   }

  system("Pause");
  return 0;

}

这里是输入的输出的ASCII转换:

这是类型数组:7这是值数组:☺

请指教,谢谢!

2 个答案:

答案 0 :(得分:2)

问题是您无法在String中存储int,但是您可以从String创建int这就是第二个选项编译的原因。

但是,当您执行此操作时,您将获得ASCII值等于int的字符。因此,在您的情况下,您将获得7的ASCII字符,这是您要打印的字符。

如果您要打印7,您需要获取7的ASCII码,您可以执行以下操作:

types[i] = typeArray[0] + '0';

但我不认为这是你真正想做的事情。

您可以创建一个包含intString的结构,以便将它们保持在一起,然后创建一个struct的数组。

typedef struct typeStruct {
     int value;
     string disp;
} typeStruct;

typeStruct类型[13];

编辑:基于您对此答案的评论,我认为您想要这个

string values[6] = {"INVALID", "one", "two", "three", "four", "five"};
int size = 6;   
...   

//This prints the value for a given int
void printValue(int val) {
     cout << values[val] << endl;
}

//This gets the int val for a given string
int getValue(string str) {
   for(int i = 0; i < size; i++) {
        if(str.compare(values[i]) == 0) {
              return i;
        }
   }
   return -1;
}

答案 1 :(得分:1)

看起来你应该使用

 Map<int, string>

它可以帮助您将整数值绑定到字符串。 无论如何,您正在尝试将字符串分配给int。