C++ 用户定义的数组被解释为十六进制?

c++ user-defined array being interpreted as hexadecimal?

本文关键字:解释 十六进制 数组 用户 定义 C++      更新时间:2023-10-16

编辑:我第一次这样做时,我问了太多问题。现在我没有提供足够的细节。简单地 c 一个数组是没有帮助的,因为我正在尝试对数组进行算术,它误解了数据。它可能有助于弄清楚问题是什么,所以我将其标记为正确答案并发布新帖子。我不知道还能做什么,我显然没有向读者传达大局。

我需要程序将用户定义的字符串解释为数组。我试图实施user463035818的建议,但我认为它不正确。

我正在谈论的数组在程序的这一部分的顶部初始化为 arrnStoreInput01A(我已经裁剪了它,以便于阅读(。我指示用户以"i,j,k"格式输入三个数字(如果更好,我将更改为"i j k" - 我已经测试了两者(。现在的情况是,当我要求程序将结果吐回给我时(从底部开始第 4 行(,无论我是否使用逗号,它都会吐出一个十六进制而不是 {i,j,k}(结果是不同的十六进制,虽然(。

发生了什么事?我该如何解决这个问题,以便我有一个 1x3 的整数数组,我可以对其执行算术运算,即 3*arrnStoreInput01A?谢谢。

#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <limits>
#include <tuple>
int main()
{
int nNumCup = 0, nNumLem = 0, nNumSug = 0, nNumIce = 0;
float fCoH = 20.00, fCostCup25 = 1.99, fCostCup50 = 2.49, fCostCup100 = 2.99;
int arrnStoreInput01A[3];
std::cout << "Go to Cups n n";
std::cout << "Cups are availible in packs of 25, 50 and 100. n"
"Please enter three numbers in "i,j,k" format for the n"
"respective amounts of each of the following three products n"
"you want to buy: n n"
"A) 25-pack of cups for " << fCostCup25 << "n"
"B) 50-pack of cups for " << fCostCup50 << "n"
"C) 100-pack of cups for " << fCostCup100 << "n n"
"For example, type "0,4,0" to purchase 4 packages of 50 cups or n"
"type "3,2,1" to buy 3 packages of 25 cups, 2 packages of 50 cups n"
"and 1 package of 100 cups. n n";
std::cin >> arrnStoreInput01A[0] >> arrnStoreInput01A[1] >> arrnStoreInput01A[2];
float arrnCostCup[3] = { fCostCup25,fCostCup50,fCostCup100 };
int arrnQuantCup[3] = { 25,50,100 };
std::cout << arrnStoreInput01A;
return 0;
}

变量arrnStoreInput01A是一个数组。没有可用于打印数组的operator<<重载。

相反,正在发生的事情是arrnStoreInput01A衰减到指向其第一个元素的指针,并且该指针被打印出来。

所以当你这样做时

std::cout << arrnStoreInput01A;

真正发生的事情是

std::cout << &arrnStoreInput01A[0];

如果要打印数组的所有元素,则必须显式迭代它,打印每个元素。

例如

for (auto const value : arrnStoreInput01A)
{
std::cout << value << ' ';
}