structure中使用string問題 |
答題得分者是:zhgwbzhd
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
我在C++ Primer Plus 5/e中看到以下內容:
結構可以使用string類別成員嗎? 原則上可行,但是取決於編譯程式,如BCB 5.5與VC 7.1以前的版本不支援使用string類別成員之結構的初始。 我是使用CodeGear 2007的Conscol Application ( Source Type: C ,只勾選Conscol App) [code cpp] //--------------------------------------------------------------------------- #include #include #pragma hdrstop using namespace std; #pragma argsused //--------------------------------------------------------------------------- struct inflatable_ch { char name[20]; float volume; double price; }; struct inflatable_str { string name_str; float volume_str; double price_str; }; struct inflatable_str_init { string name_str_init; float volume_str_init; double price_str_init; }; //--------------------------------------------------------------------------- int main(int argc, char* argv[]) { inflatable_ch guest_ch[5]= { {"Amy", 0.5, 21.99}, {"Bob", 1.8, 30.14} }; cout<<"結構成員宣告使用char並做初始化\n"; for(int i=0;i<5;i ) cout<<"guest_ch["< guest_ch[i].name<<"\t"< cout<<"結構成員宣告使用string\n"; inflatable_str guest_str[1]; guest_str[0].name_str="Peter"; guest_str[0].volume_str=20.11; guest_str[0].price_str=100.98; cout<<"guest_str_init[0]: "<< guest_str[0].name_str<<"\t"< cout<<"結構成員宣告使用string並做初始化\n"; inflatable_str_init guest_str_init[5]= { {"Alice", 10, 21.99}, {"Brian", 1, 30.14} }; for(int i=0;i<5;i ) cout<<"guest_str_init["< guest_str_init[i].name_str_init<<"\t"< system("PAUSE"); return 0; } //--------------------------------------------------------------------------- [/code] 以下是執行結果 結構成員宣告使用string guest_str_init[0]: Peter 20.11 100.98 執行結果中,如果使用string類別宣告struct的成員(guest_str_init),在cout會有問題,但是卻是float及double的值有問題,如果是直接指定(guest_str)則是正確的。 請問,這是因為CodeGear2007不支援這樣的宣告及初始化嗎?還是我哪邊有寫錯?但是照書本的寫法,CodeGear2007應該是支援這樣的使用方式才對。 煩請解答我的問題,謝謝。 我使用Dev-C 4.9.9.2的結果如下 結構成員宣告使用string guest_str_init[0]: Peter 20.11 100.98 結構成員宣告使用string並做初始化 guest_str_init[0]: Alice 10 21.99 ---->正確 guest_str_init[1]: Brian 1 30.14 ---->正確 guest_str_init[2]: -7.91346e-039 -3.52284e-062 ---->為何不是0 guest_str_init[3]: -1.#QNAN 4.24814e-314 ---->為何不是0 guest_str_init[4]: 2.93874e-039 1.67672e-307 ---->為何不是0 請按任意鍵繼續 . . . string在struct中的初始化值會有這麼大的影響嗎?為什麼其他的變數不會有這種問題? 編輯記錄
GGL 重新編輯於 2009-06-06 03:33:19, 註解 無‧
|
zhgwbzhd
一般會員 發表:10 回覆:32 積分:18 註冊:2008-07-24 發送簡訊給我 |
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |