看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《alberthsieh (Breezing...)》之銘言: : 有個字串/整數轉換問題想請教各位. 以前常看到很多程式在處理數字構成 : 的字串時實際上都是存成整數陣列, 例如 : 1234567891 放到 int tmp[5], tmp 對應的內容變成 : tmp[0] -> 21 : tmp[1] -> 43 : tmp[2] -> 65 : tmp[3] -> 87 : tmp[4] -> 19 : 請問這通常是怎麼做的? 如果要反過來把這個整數陣列還原成原本字串 : 通常又是怎麼作呢? 我現在想的到的方法: : 1. 轉整數陣列時依序把每個字元轉成數字, 搭配 & 0xF0 跟 0x0F 還有 << 運算子 : 轉換. : 2. 還原時反過來處理. : 不過總覺得應該還有更簡便更漂亮的處理方式. 針對此兩位數問題,可用 STL ,程式應該不算複雜: 第一個 transform 是直接將合併的結果印出來, 第二個 transform 是存到 ostr 後再印出來。 string fn( int s ) { return string(1,'0'+s%10) + static_cast<char>('0'+s/10) ; } int main() { const int S = 5 ; int no[S] = { 10 , 32 , 54 , 76 , 98 }; transform( no , no+S , ostream_iterator<string>(cout,"") , fn ) ; cout << endl ; ostringstream ostr ; transform( no , no+S , ostream_iterator<string>(ostr,"") , fn ) ; cout << ostr.str() << endl ; return 0 ; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.25.21
alberthsieh:謝謝. 如果是 ANSI C 就只有搭配 0x0F 0xF0 還有 >> 09/14 11:55
alberthsieh:的作法嗎? 09/14 11:55
Feis:用 >> 之類的作法有什麼不好嗎? 還是只是想寫不一樣的形式? 09/14 15:45