C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型
1. 提取 bitset 的值
函數(shù)返回一個(gè)值,保存了與bitset 對(duì)象相同的位模式。
- to_ulong() // 返回unsigned long
- to_ullong() //返回unsigned long long
只有當(dāng)bitset 的大小小于等于對(duì)應(yīng)的大小時(shí), 我們才能使用這兩個(gè)操作(如果bitset中的值不能放入給定類型中,則這兩個(gè)操作會(huì)拋出一個(gè)overflow error異常)
unsigned long ulong = bitvec3.to_ulong( ); cout ? "ulong = " ? ulong << endl;2. bitset 的 IO 運(yùn)算符
輸入運(yùn)算符從一個(gè)輸入流讀取字符, 保存到一個(gè)臨時(shí)的 string 對(duì)象中。 直到讀取的字符數(shù)達(dá)到對(duì)應(yīng) bitset 的大小時(shí), 或是遇到不是 1 或 0 的字符時(shí), 或是遇到文件尾或輸入錯(cuò)誤時(shí), 讀取過(guò)程才停止。 隨即用臨時(shí) string 對(duì)象來(lái)初始化 bitset 。如果讀取的字符數(shù)小于bitset 的大小, 則與往常一樣, 高位將被置為 0。
輸出運(yùn)算符打印一個(gè) bitset 對(duì)象中的位模式:
bitset<16> bits; cin ? bits; // 從 cin 讀取最多 16 個(gè) 0 或 1 cout ? "bits: " ? bits << endl; // 打?qū)?岡讀取的內(nèi)容3. 使用 bitset
用bitset代替 unsigned long 表示 30 個(gè)學(xué)生的測(cè)驗(yàn)結(jié)果—“ 通過(guò)/失畋”:
bool status; // 使用位運(yùn)算符的版本 unsigned long quizA = 0; // 此值被當(dāng)做位集合使用 quizA |= 1UL << 27; // 指出第 27 個(gè)學(xué)生通過(guò)了測(cè)驗(yàn) status = quizA & (1UL << 27); // 檢查第 27 個(gè)學(xué)生是否ton過(guò)了測(cè)驗(yàn) quizA &= ~(1UL << 27); // 第 27 個(gè)學(xué)生未通過(guò)測(cè)驗(yàn)// 使用標(biāo)準(zhǔn)庫(kù)類 bitset 完成等價(jià)的工作 bitset<30> quizB; // 每個(gè)學(xué)生分配一位,所有為都被初始化為 0 quizB.set(27); // 指出第 27 個(gè)學(xué)生通過(guò)了測(cè)驗(yàn) status = quizB[27]; // 檢查第 27 個(gè)學(xué)生是否通過(guò)了測(cè)驗(yàn) quizB.reset(27); // 第 27 個(gè)學(xué)生未通過(guò)測(cè)驗(yàn)總結(jié)
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha