【问题标题】:Array and hex values C++?数组和十六进制值 C++?
【发布时间】:2015-05-24 04:31:28
【问题描述】:

我有一个.txt,其中包含一些十六进制数字,我将它们放入带有ifstream 的数组中。但是,它打印不正确,我的意思是,数字不相符。这是我的代码:

void arrayNumbers(unsigned int longSize, unsigned int array[]) {
    file.open("hex.txt");
    int i;
    if(file){
        longSize=4; 
        array[longSize];
        for(int i=0;i<longSize;i++){ 
            file >> hex >> array[i];
            cout << array[i]<< endl; 
        }
        cout << "RIGHT" << endl;
    }
    else
        cout << "WRONG" << endl;

    file.close();
}

main(),我有:

void main() {
    unsigned int array[longSize];
    unsigned int longSize=4;
    arrayNumbers(longSize,array);
    cout << "OK" << endl;
}

这里发生了什么? T-T

【问题讨论】:

  • 你为什么要把你的}放在这么奇怪的地方?
  • 你能发一个MCVE吗?你现在拥有的甚至不应该编译。
  • 你在用哪本书?
  • 您意识到array[longSize]; 不会创建新数组吗?

标签: c++ arrays hex


【解决方案1】:

错误可能是您在打印数字之前没有将hex 传递给cout

如果稍微清理一下你的程序:

#include <iostream>
#include <fstream>

using namespace std;

void arrayNumbers(unsigned int longSize, unsigned int array[]) {
    fstream file("hex.txt");
    if (file){
        for (int i = 0; i < longSize; i++){
            file >> hex >> array[i];
            cout << hex << array[i] << endl;
        }
        cout << "RIGHT" << endl;
    } else {
        cout << "WRONG" << endl;
    }
}

void main() {
    const size_t longSize = 4;
    unsigned int array[longSize];

    arrayNumbers(longSize, array);
    cout << "OK" << endl;
}

【讨论】:

    【解决方案2】:
    longSize=4; 
    array[longSize];
    

    这一点是完全错误的。您在这里尝试做但不能做的事情:

    • 在运行时增加数组的大小(大概你的意图是无意义的array[longSize]
    • 从运行时值中选择数组的大小 (longSize)

    请考虑使用std::vector

    此外,您的 main 返回 void 而不是 int(格式不正确),并且 main 内的数组具有另一个运行时变量的大小,该变量在 after 之后声明em> 数组!

    最后,我强烈建议使用传统的缩进和大括号格式样式,因为您的样式很奇怪,并且使代码难以阅读。

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 2014-11-30
      • 2015-05-24
      • 2016-02-01
      • 2010-10-03
      • 2016-09-06
      • 2017-06-17
      • 2019-03-01
      相关资源
      最近更新 更多