C++ 用户定义的数组被解释为十六进制?
c++ user-defined array being interpreted as hexadecimal?
编辑:我第一次这样做时,我问了太多问题。现在我没有提供足够的细节。简单地 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 << ' ';
}
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 绝对编码器十六进制输入
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- C++ 用户定义的数组被解释为十六进制?
- 将每 4 位解释为十六进制值
- C++:将char*中的十六进制解释为uint8_t
- 以二进制模式扫描文件,并将十六进制字符解释为C++中的实际数字