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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.89179 の関連記事表示

<< 0 >>
■89179  Re[1]: stringクラス文字列を文字数で区切りたい
□投稿者/ 魔界の仮面弁士 -(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); }
記事No.89171 のレス /過去ログ153より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -