数组和十六进制值C ++?

时间:2015-03-20 17:04:09

标签: c++ arrays hex

我有一个.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形

2 个答案:

答案 0 :(得分:2)

longSize=4; 
array[longSize];

这个位完全错了。你在这里想要做的事情是你不能做的:

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

请考虑使用std::vector

此外,您的main会返回void而不是int(格式不正确),而main内的数组又有另一个运行时变量的大小,在数组后声明

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

答案 1 :(得分:0)

错误可能是您在打印数字之前未将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;
}