【发布时间】:2021-03-14 04:01:40
【问题描述】:
我正在尝试在 C++ 中创建一个函数,该函数将接受字符串输入并使用它来填充数组。数组将被填充的值是固定的,但这取决于传入的单词。一些元素保持不变,而一些元素发生变化。数组大小还取决于传入的字符串。我知道我可以通过制作两个更长的“if”语句来做到这一点,但这种方法似乎更有效……如果我能让它工作的话。下面的代码不起作用,但它只是为了让我大致了解我的顶空。任何帮助表示赞赏。谢谢!
myString = "long";
if (myString == "short") {
int numArr* = new int[3];
numArr[2] = 0x02;
}
if (myString == "long") {
int numArr* = new int[5];
numArr[2] = 0x04;
numArr[4] = 0xA1;
numArr[5] = 0x32;
}
numArr[0] = 0x00;
numArr[1] = 0xFF;
numArr[3] = 0x50;
cout << numArr;
delete[] numArr;
【问题讨论】:
-
您使用的是哪个 C++ 版本?当
myString是"short"时,无条件地填充numArr[3]是越界访问new int[3]。 -
你不使用
std::vector<int>的原因是什么? -
“关键词”到底是什么意思?
-
您的代码存在多个问题。但是你说
not working并没有定义你的意思。无论如何,您的问题是范围界定。您在一个范围内声明numArr,并尝试在该范围外声明cout。您需要将int nmArr*放在myString = "long";之后