C 文字列操作 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(文字列区切り文字分割)
(文字列区切り文字分割)
782行: 782行:
  
  
  雨のち晴レルヤ/ゆず,東京デスティニー/ポルノグラフィティ,熱愛発覚中/椎名林檎と中田ヤスタカ(CAPSULE),STORY OF MY LIFE/ONE DIRECTION,THE SEVEN SEAS/THE BAWDIES,手紙/ナオト・インティライミ,SLY/RIP SLYME,閃光 feat.10-FEET/東京スカパラダイスオーケストラ,風は西から/奥田民生,DIAMOND SKIN/GLAY,SO RIGHT/三代目 J Soul Brothers from EXILE TRIBE,White Winter Love。/ハジ→,APPLAUSE/LADY GAGA,ピタカゲ from「COUP D'ETAT[+ONE OF A KIND&HEARTBREAKER]」/G-DRAGON (from BIGBANG),LEMON/The Birthday,もったいないとらんど/きゃりーぱみゅぱみゅ,僕らの物語/GReeeeN,Lily/Dragon Ash,START IT AGAIN/AK-69,Very Merry Xmas/東方神起,SURVIVAL/EMINEM,ウォーリーヒーロー/KANA-BOON,あなたへ/エレファントカシマシ,キラーボール/ゲスの極み乙女。,Babies are popstars/松任谷由実,ROCK N ROLL(日本語字幕入り)/AVRIL LAVIGNE,HOT SHOT/GENERATIONS from EXILE TRIBE,守ってあげたい/JUJU,3 2 1/SHINee,Always/斉藤和義,ファンファーレがきこえる/Base Ball Bear,X'masラブストーリー。/ソナーポケット,Missing/androp,ラストバージン/RADWIMPS,エデン(lyric ver)/Aqua Timez,クルクル/e-girls,WHO'S NEXT/SiM,Time goes by/URATA NAOYA,Bi-Li-Li Emotion/Superfly,One day/TOKYO No.1 SOUL SET,粉雪/BENI,FEEVEER/MO'SOME TONEBENDER,No.525300887039/supercell,Hello\,999/N'夙川BOYS,Every Hero/kaho,黒猫?Adult Black Cat?/Acid Black Cherry,指でキスしよう/東京カランコロン,m@u/後藤まりこ,海と花束/きのこ帝国<br />
+
  Sweet Refrain/Perfume,雨のち晴レルヤ/ゆず,東京デスティニー/ポルノグラフィティ,熱愛発覚中/椎名林檎と中田ヤスタカ(CAPSULE),STORY OF MY LIFE/ONE DIRECTION,THE SEVEN SEAS/THE BAWDIES,手紙/ナオト・インティライミ,SLY/RIP SLYME,閃光 feat.10-FEET/東京スカパラダイスオーケストラ,風は西から/奥田民生,DIAMOND SKIN/GLAY,SO RIGHT/三代目 J Soul Brothers from EXILE TRIBE,White Winter Love。/ハジ→,APPLAUSE/LADY GAGA,ピタカゲ from「COUP D'ETAT[+ONE OF A KIND&HEARTBREAKER]」/G-DRAGON (from BIGBANG),LEMON/The Birthday,もったいないとらんど/きゃりーぱみゅぱみゅ,僕らの物語/GReeeeN,Lily/Dragon Ash,START IT AGAIN/AK-69,Very Merry Xmas/東方神起,SURVIVAL/EMINEM,ウォーリーヒーロー/KANA-BOON,あなたへ/エレファントカシマシ,キラーボール/ゲスの極み乙女。,Babies are popstars/松任谷由実,ROCK N ROLL(日本語字幕入り)/AVRIL LAVIGNE,HOT SHOT/GENERATIONS from EXILE TRIBE,守ってあげたい/JUJU,3 2 1/SHINee,Always/斉藤和義,ファンファーレがきこえる/Base Ball Bear,X'masラブストーリー。/ソナーポケット,Missing/androp,ラストバージン/RADWIMPS,エデン(lyric ver)/Aqua Timez,クルクル/e-girls,WHO'S NEXT/SiM,Time goes by/URATA NAOYA,Bi-Li-Li Emotion/Superfly,One day/TOKYO No.1 SOUL SET,粉雪/BENI,FEEVEER/MO'SOME TONEBENDER,No.525300887039/supercell,Hello\,999/N'夙川BOYS,Every Hero/kaho,黒猫?Adult Black Cat?/Acid Black Cherry,指でキスしよう/東京カランコロン,m@u/後藤まりこ,海と花束/きのこ帝国<br />
  
  
827行: 827行:
  
 
区切り文字として複数の文字を指定できますが、それぞれ1文字が独立した区切り文字ですので、// のような2文字以上で構成される区切り文字はこの関数だけでは対応できません。新しい手法が必要になります。
 
区切り文字として複数の文字を指定できますが、それぞれ1文字が独立した区切り文字ですので、// のような2文字以上で構成される区切り文字はこの関数だけでは対応できません。新しい手法が必要になります。
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#include <iostream>
 +
#include <tchar.h>
 +
#include <mbstring.h>
 +
//#include <locale.h>
 +
int main() {
 +
  _tsetlocale(LC_ALL, _T("Japanese"));
 +
    _locale_t locale;
 +
  locale = _create_locale(LC_ALL, "Japanese");
 +
 +
  int iCmpComma=0;
 +
  int iCmpYen=0;
 +
  int iCmpSlash=0;
 +
  int iChartCommaCnt=0;
 +
 +
  TCHAR *cStr0 = _T("Sweet Refrain/Perfume,雨のち晴レルヤ/ゆず,東京デスティニー/ポルノグラフィティ,\\熱愛発覚中/椎名林檎と中田ヤスタカ(CAPSULE),STORY OF MY LIFE/ONE DIRECTION,THE SEVEN SEAS/THE BAWDIES,手紙/ナオト・インティライミ,SLY/RIP SLYME,閃光 feat.10-FEET/東京スカパラダイスオーケストラ,風は西から/奥田民生,DIAMOND SKIN/GLAY,SO RIGHT/三代目 J Soul Brothers from EXILE TRIBE,White Winter Love。/ハジ→,APPLAUSE/LADY GAGA,ピタカゲ from「COUP D'ETAT[+ONE OF A KIND&HEARTBREAKER]」/G-DRAGON (from BIGBANG),LEMON/The Birthday,もったいないとらんど/きゃりーぱみゅぱみゅ,僕らの物語/GReeeeN,Lily/Dragon Ash,START IT AGAIN/AK-69,Very Merry Xmas/東方神起,SURVIVAL/EMINEM,ウォーリーヒーロー/KANA-BOON,あなたへ/エレファントカシマシ,キラーボール/ゲスの極み乙女。,Babies are popstars/松任谷由実,ROCK N ROLL(日本語字幕入り)/AVRIL LAVIGNE,HOT SHOT/GENERATIONS from EXILE TRIBE,守ってあげたい/JUJU,3 2 1/SHINee,Always/斉藤和義,ファンファーレがきこえる/Base Ball Bear,X'masラブストーリー。/ソナーポケット,Missing/androp,ラストバージン/RADWIMPS,エデン(lyric ver)/Aqua Timez,クルクル/e-girls,WHO'S NEXT/SiM,Time goes by/URATA NAOYA,Bi-Li-Li Emotion/Superfly,One day/TOKYO No.1 SOUL SET,粉雪/BENI,FEEVEER/MO'SOME TONEBENDER,No.525300887039/supercell,Hello\\,999/N'夙川BOYS,Every Hero/kaho,黒猫?Adult Black Cat?/Acid Black Cherry,指でキスしよう/東京カランコロン,m@u/後藤まりこ,海と花束/きのこ帝国");
 +
TCHAR *pcStr0 = new TCHAR[(_tcslen(cStr0)) + 1];
 +
TCHAR *pcStr1 = new TCHAR[(_tcslen(cStr0)) + 1];
 +
  TCHAR *pcStr2 = new TCHAR[(_tcslen(cStr0)) + 1];
 +
  TCHAR *pcStrTmp;
 +
  TCHAR *pcStrTmp2;
 +
  TCHAR *tcharComma = _T(",");
 +
  TCHAR *tcharYen = _T("\\");
 +
  TCHAR *tcharSlash = _T("/");
 +
  for(unsigned int i = 0; i < _tcslen(cStr0); i++){
 +
    iCmpComma = _tcsncmp(&cStr0[i], tcharComma, 1);
 +
    if(i > 0){
 +
      iCmpYen = _tcsncmp(&cStr0[i - 1] , tcharYen, 1);//コンマ区切りだけど曲名やアーチスト名そのものに,が使われている場合は
 +
                                                    //予めデータを\,のようにエスケープするというデータ規則が必要。,の前に\が無いか確認して配列サイズを確保。
 +
    }
 +
    if( iCmpComma == 0 && iCmpYen != 0){
 +
      iChartCommaCnt++;
 +
    }
 +
  }
 +
  TCHAR ***ppcStrChart = new TCHAR**[1];
 +
  TCHAR **ppcStrChartTmp = new TCHAR*[iChartCommaCnt];
 +
  for(int i = 0; i <= iChartCommaCnt;i++){
 +
    ppcStrChartTmp[i] = new TCHAR[iChartCommaCnt];
 +
 +
    ppcStrChart[i] = new TCHAR*[iChartCommaCnt];//曲名とアーチスト名の2要素固定
 +
    ppcStrChart[i] = new TCHAR*[iChartCommaCnt];//曲名とアーチスト名の2要素固定
 +
  }
 +
 +
  TCHAR *next_token1 = NULL;
 +
  TCHAR *next_token2 = NULL;
 +
 
 +
  _tcsncpy_s(pcStr0, _tcslen(cStr0)  + 1,cStr0, _tcslen(cStr0) + 1);//ココ!
 +
  pcStr1 = _tcstok_s(pcStr0,_T(","), &next_token1);//establish 1回目の呼び出し
 +
  {
 +
 +
  int i = 0;
 +
  bool bStopIncriment = false;
 +
  bool bStopIncriment2 = false;
 +
    while(pcStr1 != NULL && i <= (iChartCommaCnt)){
 +
 +
      if (bStopIncriment)//区切り文字の前に\が見つかった場合はiを加算しない。
 +
      {
 +
        pcStrTmp = new TCHAR[_tcslen(ppcStrChartTmp[i]) + 1];//現在の文字列最後に区切り文字ではない,があるtmp文字列値バックアップをとるための容量を確保。
 +
        _tcsncpy_s(pcStrTmp, _tcslen(ppcStrChartTmp[i]) + 1, ppcStrChartTmp[i], _tcslen(ppcStrChartTmp[i]) + 1 );//そしてバックアップ変数へコピー
 +
        delete[] ppcStrChartTmp[i];//tmp値を一旦クリア。
 +
        ppcStrChartTmp[i] = new TCHAR[_tcslen(pcStrTmp) + _tcslen(pcStr1) + 1];//もう一度容量を確保しなおす。バクアップ変数の長さ+次の区切り文字までの長さ
 +
        _tcsncpy_s(ppcStrChartTmp[i], _tcslen(pcStrTmp) + _tcslen(pcStr1) + 1 ,pcStrTmp, _tcslen(pcStrTmp));//バックアップ変数と今回の区切り文字を繋ぐ。
 +
        _tcsncat_s(ppcStrChartTmp[i], _tcslen(pcStrTmp) + _tcslen(pcStr1) + 1 ,pcStr1, _tcslen(pcStr1));//バックアップ変数と今回の区切り文字を繋ぐ。
 +
        _tprintf(_T("i=%2d,ChartTmp1=%s; StrTemp=%s;\n"),i,ppcStrChartTmp[i],pcStrTmp);
 +
        delete[] pcStrTmp;//バックアップ変数は利用終了。解放。
 +
      }
 +
      iCmpYen = _tcsncmp(&pcStr1[_tcslen(pcStr1)-1],tcharYen,1);//お次の区切り文字は,区切りにしたpcStr1の最後の文字は\ではなかったか確認?
 +
      if(iCmpYen != 0){
 +
 +
        //\以外の通常処理
 +
        if(!bStopIncriment){
 +
          ppcStrChartTmp[i] = new TCHAR[_tcslen(pcStr1) + 1];//区切り文字の長さで文字配列配列i番目を確保
 +
          _tcsncpy_s(ppcStrChartTmp[i],_tcslen(pcStr1) + 1,pcStr1,_tcslen(pcStr1) + 1);//正式な区切り文字なので、区切りまでをコピーして格納。i番目の処理は終了。       
 +
        }
 +
        pcStrTmp2 = new TCHAR[_tcslen(ppcStrChartTmp[i]) + 1];
 +
        _tcsncpy_s(pcStrTmp2,_tcslen(ppcStrChartTmp[i]) + 1,ppcStrChartTmp[i],_tcslen(ppcStrChartTmp[i]) + 1);//正式な区切り文字なので、区切りまでをコピーして格納。i番目の処理は終了。       
 +
        ppcStrChart[i][0] = new TCHAR[_tcslen(pcStrTmp2) + 1];
 +
       
 +
        //完全な入れ子状態。, 区切り処理を / 区切り処理に変えただけ。関数化すればスッキリする。けどそんな関数を作るのが目的ではないので、敢えてコレ。*****************
 +
 +
 +
        pcStr2 = _tcstok_s(pcStrTmp2, _T("/"), &next_token2);//establish 1回目の呼び出し
 +
 +
 +
        while(pcStr2 != NULL){
 +
          if(bStopIncriment2){
 +
            pcStrTmp = new TCHAR[_tcslen(ppcStrChart[i][0]) + 1];//現在の文字列最後に区切り文字ではない,があるtmp文字列値バックアップをとるための容量を確保。
 +
            _tcsncpy_s(pcStrTmp, _tcslen(ppcStrChart[i][0]) + 1, ppcStrChart[i][0], _tcslen(ppcStrChart[i][0]) + 1 );//そしてバックアップ変数へコピー
 +
            delete[] ppcStrChart[i][0];//tmp値を一旦クリア。
 +
            ppcStrChart[i][0] = new TCHAR[_tcslen(pcStrTmp) + _tcslen(pcStr2) + 1];//もう一度容量を確保しなおす。バクアップ変数の長さ+次の区切り文字までの長さ
 +
            _tcsncpy_s(ppcStrChart[i][0], _tcslen(pcStrTmp) + _tcslen(pcStr2) + 1 ,pcStrTmp, _tcslen(pcStrTmp));//バックアップ変数と今回の区切り文字を繋ぐ。
 +
            _tcsncat_s(ppcStrChart[i][0], _tcslen(pcStrTmp) + _tcslen(pcStr2) + 1 ,pcStr2, _tcslen(pcStr2));//バックアップ変数と今回の区切り文字を繋ぐ。
 +
 +
            delete[] pcStrTmp;//バックアップ変数は利用終了。解放。
 +
          }
 +
          iCmpSlash = _tcsncmp(&pcStr2[_tcslen(pcStr2) - 1],tcharSlash,1);
 +
 +
          if(iCmpSlash != 0){
 +
            if(!bStopIncriment2){
 +
             
 +
              ppcStrChart[i][0] = new TCHAR[_tcslen(pcStr2) + 1];
 +
              _tcsncpy_s(ppcStrChart[i][0],_tcslen(pcStr2) + 1,pcStr2,_tcslen(pcStr2) + 1);//正式な区切り文字なので、区切りまでをコピーして格納。i 0番目の処理は終了。       
 +
             
 +
            }
 +
            bStopIncriment2 = false;
 +
          }
 +
          else{
 +
            ppcStrChart[i][0] = new TCHAR[_tcslen(pcStr2) + 1];//まずは区切り文字までの長さより1文字、短い領域を確保。
 +
            _tcsncpy_s(ppcStrChart[i][0],_tcslen(pcStr2) + 1 ,pcStr1,_tcslen(pcStr2) - 1);//[*]~[*] [\][/][\0]の\以降を削ってコピー。[*]~[*][\0]になる。
 +
            _tcsncat_s(ppcStrChart[i][0],_tcslen(pcStr2) + 1 ,tcharSlash,_tcslen(tcharSlash) + 1);//カンマを付け足す。[*]~[*][/][\0]になる。
 +
            bStopIncriment2 = true;         
 +
          }
 +
 +
 +
          pcStr2 = _tcstok_s(NULL,_T("/"), &next_token2);//2回目以降の呼び出し
 +
          ppcStrChart[i][1] = new TCHAR[_tcslen(pcStr2) + 1];
 +
          _tcsncpy_s(ppcStrChart[i][1], _tcslen(pcStr2) + 1, pcStr2, _tcslen(pcStr2) + 1);
 +
          pcStr2 = _tcstok_s(NULL,_T("/"), &next_token2);//2回目以降の呼び出し
 +
        }
 +
       
 +
        //完全な入れ子状態ここまで**************************************************************************************************************************************
 +
        i++;
 +
        bStopIncriment = false;         
 +
        delete pcStrTmp2;
 +
      }
 +
      else{
 +
 +
        //\なら,は区切りではないので、ppcStrChartTmp[i]を再作成して、1文字分短くして、\,→,と扱いtmpへ格納。       
 +
        ppcStrChartTmp[i] = new TCHAR[_tcslen(pcStr1) + 1];//まずは区切り文字までの長さより1文字、短い領域を確保。
 +
        _tcsncpy_s(ppcStrChartTmp[i],_tcslen(pcStr1) + 1 ,pcStr1,_tcslen(pcStr1) - 1);//[*]~[*] [\][,][\0]の\以降を削ってコピー。[*]~[*][\0]になる。
 +
        _tcsncat_s(ppcStrChartTmp[i],_tcslen(pcStr1) + 1 ,tcharComma,_tcslen(tcharComma) + 1);//カンマを付け足す。[*]~[*][,][\0]になる。
 +
        bStopIncriment = true;         
 +
      }
 +
     
 +
      pcStr1 = _tcstok_s(NULL,_T(","),&next_token1);//2回目以降の呼び出し
 +
    }
 +
  }
 +
  _tprintf(_T("{| style=\"color:black; background-color:#ffffff;\" cellpadding=\"3\" cellspacing=\"0\" border=\"1\""));
 +
  for(int i = 0; i < iChartCommaCnt;i++){
 +
    _tprintf(_T("|%s\n|%s\n|-\n"),ppcStrChart[i][0],ppcStrChart[i][1]);
 +
  }
 +
  _tprintf(_T("|%s\n|%s\n|}\n"),ppcStrChart[iChartCommaCnt][0],ppcStrChart[iChartCommaCnt][1]);
 +
 +
    printf("%d\n",iChartCommaCnt);
 +
    for(int i = 0;i <= iChartCommaCnt ;i++){
 +
    delete[] *(*(ppcStrChart + i) + 0);
 +
    delete[] *(*(ppcStrChart + i) + 1);
 +
    delete[] *(ppcStrChartTmp + i);
 +
    }
 +
  for(int i = 0;i <= iChartCommaCnt;i++){
 +
    delete[] *(ppcStrChart + i);
 +
  }
 +
  for(int j = 0; j < sizeof(cStr1)/sizeof(*cStr1); j++){
 +
  }
 +
  printf("a\n");
 +
  return 0;
 +
}
 +
</syntaxhighlight>
 +
という具合にtcstok_s関数を使えば、並列してトークン処理が進められるようです。第3引数の参照というC++独自の型を使って、47行目 81行目での最初の呼び出し(エスタブリッシュとも表現します。エスタブリッシュショットというと撮影なんかでワンシーンの手前に一枚絵の風景絵を置くことで、時間帯を表現したりする手法を指します。夜景がシーンの前に入れば室内に映像が切り替わっても夜の出来事であるように示唆するものです。)をして、114、117、134行目のように連続して現れるであろう区切り文字を検索します。114,117行目では、もう区切り文字が現れることがないことがわかっているのですが、2個目のトークンを取得するために実行したり、ループ処理を終わらせるために再度、実行したりという手法で使っています。アイデア次第でなんでもありです。最初にカンマ区切りでトークンを取得するのですが、その間で、さらにカンマ区切りトークンの中に必ず一度現れる、スラッシュによるトークン処理を入れこんでいます。区切り文字が違うだけで全く同じ処理です。こういうプログラム記法は普通はしません。通常は、関数のようなサブプログラムにして、関数を呼び出すことで同じ処理になるように記述します。C++の場合は関数でなくても、クラスのメンバ関数にしても良い訳です。結局同じことですが…。<br />
 +
 +
 +
このような下手くそなプログラムを動かした結果が以下の通りになります。
 +
{| style="color:black; background-color:#ffffff;" cellpadding="3" cellspacing="0" border="1"
 +
|Sweet Refrain
 +
|Perfume
 +
|-
 +
|雨のち晴レルヤ
 +
|ゆず
 +
|-
 +
|東京デスティニー
 +
|ポルノグラフィティ
 +
|-
 +
|\熱愛発覚中
 +
|椎名林檎と中田ヤスタカ(CAPSULE)
 +
|-
 +
|STORY OF MY LIFE
 +
|ONE DIRECTION
 +
|-
 +
|THE SEVEN SEAS
 +
|THE BAWDIES
 +
|-
 +
|手紙
 +
|ナオト・インティライミ
 +
|-
 +
|SLY
 +
|RIP SLYME
 +
|-
 +
|閃光 feat.10-FEET
 +
|東京スカパラダイスオーケストラ
 +
|-
 +
|風は西から
 +
|奥田民生
 +
|-
 +
|DIAMOND SKIN
 +
|GLAY
 +
|-
 +
|SO RIGHT
 +
|三代目 J Soul Brothers from EXILE TRIBE
 +
|-
 +
|White Winter Love。
 +
|ハジ→
 +
|-
 +
|APPLAUSE
 +
|LADY GAGA
 +
|-
 +
|ピタカゲ from「COUP D'ETAT[+ONE OF A KIND&HEARTBREAKER]」
 +
|G-DRAGON (from BIGBANG)
 +
|-
 +
|LEMON
 +
|The Birthday
 +
|-
 +
|もったいないとらんど
 +
|きゃりーぱみゅぱみゅ
 +
|-
 +
|僕らの物語
 +
|GReeeeN
 +
|-
 +
|Lily
 +
|Dragon Ash
 +
|-
 +
|START IT AGAIN
 +
|AK-69
 +
|-
 +
|Very Merry Xmas
 +
|東方神起
 +
|-
 +
|SURVIVAL
 +
|EMINEM
 +
|-
 +
|ウォーリーヒーロー
 +
|KANA-BOON
 +
|-
 +
|あなたへ
 +
|エレファントカシマシ
 +
|-
 +
|キラーボール
 +
|ゲスの極み乙女。
 +
|-
 +
|Babies are popstars
 +
|松任谷由実
 +
|-
 +
|ROCK N ROLL(日本語字幕入り)
 +
|AVRIL LAVIGNE
 +
|-
 +
|HOT SHOT
 +
|GENERATIONS from EXILE TRIBE
 +
|-
 +
|守ってあげたい
 +
|JUJU
 +
|-
 +
|3 2 1
 +
|SHINee
 +
|-
 +
|Always
 +
|斉藤和義
 +
|-
 +
|ファンファーレがきこえる
 +
|Base Ball Bear
 +
|-
 +
|X'masラブストーリー。
 +
|ソナーポケット
 +
|-
 +
|Missing
 +
|androp
 +
|-
 +
|ラストバージン
 +
|RADWIMPS
 +
|-
 +
|エデン(lyric ver)
 +
|Aqua Timez
 +
|-
 +
|クルクル
 +
|e-girls
 +
|-
 +
|WHO'S NEXT
 +
|SiM
 +
|-
 +
|Time goes by
 +
|URATA NAOYA
 +
|-
 +
|Bi-Li-Li Emotion
 +
|Superfly
 +
|-
 +
|One day
 +
|TOKYO No.1 SOUL SET
 +
|-
 +
|粉雪
 +
|BENI
 +
|-
 +
|FEEVEER
 +
|MO'SOME TONEBENDER
 +
|-
 +
|No.525300887039
 +
|supercell
 +
|-
 +
|Hello,999
 +
|N'夙川BOYS
 +
|-
 +
|Every Hero
 +
|kaho
 +
|-
 +
|黒猫?Adult Black Cat?
 +
|Acid Black Cherry
 +
|-
 +
|指でキスしよう
 +
|東京カランコロン
 +
|-
 +
|m@u
 +
|後藤まりこ
 +
|-
 +
|海と花束
 +
|きのこ帝国
 +
|}
 +
何コレ?って思いました?実はMediaWikiの表形式に変換するプログラムだったりして、出力結果をコピペすると、こういう表になるということです。これは某番組の先週のヒットチャートTOP50ですね。SuperCellのNo.って曲はカッコいいね。曲名の数字は読まなくていいらしい。椎名林檎にきゃりーぱみゅぱみゅ、Greeeen、ゆず、Perfume、東京スカパラダイスオーケストラ。最高っす( ・∀・)b意外と10位以下のあまり、もてはやされない曲でいいのあったりする。JPOPはある程度のカタチがあるよね。そのカタチにはまると、なんか好きな感じになる。歌声だったり、曲の構成だったり、意外性も案外と新しいファクターだよ。この意外性をもとめてるのが若い世代なのかもしれないね。でも、無理しないで王道ってのもいいと思うよ。みんなが好きそうな曲作るってのは、それはそれで凄い事。一部の人間の心を捉える曲もあっていいけど、やっぱ前にでれないのが現実。その間をとってる人もいれば、かたくなに自分のスタイルを貫く人もいる。お金儲け主義の曲って言われてもいいじゃん。みんなが好きな曲ってことだからね。みんなの心を捉えないとお金にならないのが音楽業界。音楽を作りもしないレーベル側に搾取される部分ってのは、なんだかもどかしいよね。でも、育ててもらった恩とか、準備してもらった機材、走り回ってくれるスタッフ、その手配をやってるのはレーベルの努力だからね。会社でいうところの特許は会社員が発明して、お金は8割くらい会社が持っていくっていうそんな感じ。研究させてもらえる環境を提供してるだけでもありがたいと思いなさいということです。それが嫌なら自分で会社たててやってみ?ろくなことなんないぜ?ってそんな感じ。自分で音楽事務所たててうまくいく人なんてそうそういないんだよ。オレは、なんかもうそういうのどうでもよくなってきて、惰性で人生を回転させてるだけ。うっかり幸せな気分でも向上するような出来事にたどり着けたら、人生っては、それなり頑張れば、それなりになるってことを確信して死ねるんだろうし、そうでないとしたら、まぁやっぱこんなもんだよな人生ってのはって心の隅で感じて、半笑いくらいで死ねるような気がする。この先も、どうでもいい。<br />
 +
 +
 +
別にプログラムつくりたいわけでもなし、こんな文書かいてんだから、まぁ分かる人には分かるでしょ。それでいい。マルチバイト版とマルチバイト2バイト対応版の動作も確認したいよね。まぁ時間があったらですね。
  
 
=='''文字列の型変換'''==
 
=='''文字列の型変換'''==

2013年12月8日 (日) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス