假设我有一个50个整数的结构。有没有办法打印出每个整数的值而不必手动输入它?
示例:
struct foo
{
int one; //= 1
int two; //= 2
int three; //= 3
...
int fifty; //= 50
};
int main()
{
foo bar;
int dream;
cout << someThing(bar) //prints 12345...50
}
编辑: 我意识到这样的数据应该存储在一个数组中,这只是一个假设的问题。 我很好奇是否存在这样的事情。
答案 0 :(得分:4)
嗯,你可能应该首先使用数组来做这样的事情,因为这样可以让这个任务变得更容易: - )
但是,您可以尝试将结构转换为数组并将其打印出来。不能保证它在每个实现中都能工作,因为结构可能会以不同的方式填充到数组中,尽管我无法想象为什么,但是你可能会很幸运:
int *base = (int*)(&bar.one);
for (int i = 0; i < 50; i++)
std::cout << "Item #" << (i + 1) << " = " << base[i] << '\n';
举例来说,以下程序:
#include <iostream>
struct foo {
int one, two, three, four;
};
int main() {
foo bar;
bar.one = 42;
bar.two = 314159;
bar.three = 271828;
bar.four = 1414;
int *base = (int*)(&bar.one);
for (int i = 0; i < 4; i++)
std::cout << "Item #" << (i + 1) << " = " << base[i] << '\n';
return 0;
}
输出:
Item #1 = 42
Item #2 = 314159
Item #3 = 271828
Item #4 = 1414
在我的环境中(Debian 7,g ++ 4.7.2):
但是,如果你想把它们视为一个数组,它们真的应该 一个数组。