簡體   English   中英

如何打印結構的每個成員

[英]How to print every member of a structure

假設我有一個包含 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
}

編輯:我意識到這樣的數據應該存儲在一個數組中,這只是一個假設問題。 我只是好奇是否存在這樣的東西。

好吧,您可能應該首先將數組用於這樣的事情,因為這會使這項任務變得容易得多:-)

但是,您可以嘗試將結構轉換為數組並將其打印出來。 不能保證它會在每個實現中工作,因為結構可能會以不同的方式填充到數組,盡管我無法想象為什么,但你可能會很幸運:

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):

但是,如果你想把它們當作一個數組來對待,它們真的應該一個數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM