作者pziyout (pziyout)
看板C_and_CPP
標題Re: [問題] 請教一個程式設計技巧
時間Sat Sep 14 09:30:39 2013
※ 引述《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