C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■89179 / )  Re[1]: stringクラス文字列を文字数で区切りたい
□投稿者/ 魔界の仮面弁士 (1921回)-(2018/11/05(Mon) 11:55:29)
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); }
返信 編集キー/


管理者用

- Child Tree -