|
■No89171 (ビキナー さん) に返信 > 例(3ビットで区切りたい): > string str = "123456789012";
『3 ビット』で区切るの意味にもよりますが、 "123……" という文字列を 3bit で区切ると → 16進数では: 31,32,33,…… → 2 進数では: 00110001,00110010,00110011,…… → 3 bit 区切: 001,100,010,011,001,000,110,011,…… になりますね。
> stringクラスで宣言した文字列を、文字数で区切る良い方法はないでしょうか?
「3 ビット」なのか「3 文字」なのか「3 バイト」なのかで変わってきますが、 > str2[0] = "123" > str2[1] = "456" という結果を得たいのであれば、Jitta さんや Azulean さんの回答を参考に str2[0] = str.substr(0u, 3u); str2[1] = str.substr(3u, 3u); str2[2] = str.substr(6u, 3u); str2[3] = str.substr(9u, 3u); になるように切り出していけると思います。 ただし、マルチバイト文字は含まれないという前提で。
using namespace std;
size_t chunkSize = 3u;
size_t const limitIndex = 10u; string str = "123456789012"; string str2[limitIndex];
size_t maxIndex = (size_t)ceil(str.length() / (double)chunkSize); if (limitIndex < maxIndex) { maxIndex = limitIndex; } for (size_t i = 0u; i < maxIndex; i++) { str2[i] = str.substr(i * chunkSize, chunkSize); }
|