我希望将数组的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转换:
请指教,谢谢!
答案 0 :(得分:2)
问题是您无法在String
中存储int
,但是您可以从String
创建int
这就是第二个选项编译的原因。
但是,当您执行此操作时,您将获得ASCII值等于int
的字符。因此,在您的情况下,您将获得7
的ASCII字符,这是您要打印的字符。
如果您要打印7
,您需要获取7
的ASCII码,您可以执行以下操作:
types[i] = typeArray[0] + '0';
但我不认为这是你真正想做的事情。
您可以创建一个包含int
和String
的结构,以便将它们保持在一起,然后创建一个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。