C++: C#の Switch の中身を書くために作ったプログラム

とにかく楽したかった。なんで今まで書かなかったのか謎。
Unity を使っていて Enum で場合分けをするときはどうしても Switch にたくさん書くので Enum で宣言したものをいれてしまえば中身を返してくれるものを作ってみた。
switch(){
}
の中身を返してくれるようにした。
たぶん Int,String,Char,Enum に対応している。
第三引数に String(文字列) を入れると何もつけたくないときの例になる。(また<>の関係でいろいろ消えてた

#include <bits/stdc++.h>

using namespace std;
vector<string> getvs(string &s,char c){
string element;
vector<string> rvs;
int l = s.length();
for(int i=0;i<l;i++){ 
if(s[i] == c){
rvs.push_back(element);
element.clear();
}else{ 
element += s[i];
} 
if(i == l-1 && s[i] != c){
rvs.push_back(element);
}
} 
return rvs;
} 
int main(void){ char t; string s; string as; char c; cin >> s >> c >> t >> as;
  vector<string> vs;
  
  vs = getvs(s,c);
  for(int i=0;i<vs.size();i++){
    cout << "case ";
    if(t == 'e'){
    if(as != ""){
      cout << as << ".";
    }
    }else if(t == 's'){
      cout << "\"";
    }else if(t == 'c'){
      cout << "\'";
    }
    cout << vs[i];
    if(t == 's'){
      cout << "\"";
    }else if(t == 'c'){
      cout << "\'";
    }
    cout << ":" << endl;
    cout << "break;" << endl;
  }
}

標準入力でとってるけど直接 s にいれといてもいいと思う。

 

入力はこんな感じ
わかりにくいかもしれないけど Z とその右の , にはスペースが入っている。
これは , で分けてるけど入力によってそれもいろいろ変えられる。
三つ目の引数に e を入れると Enum
s を入れると String
c を入れると Char
他は int とかそういう感じになるはず。

 

Enum 用の入力例

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z , e Type

出力

case Type.A:
break;
case Type.B:
break;
case Type.C:
break;
case Type.D:
break;
case Type.E:
break;
case Type.F:
break;
case Type.G:
break;
case Type.H:
break;
case Type.I:
break;
case Type.J:
break;
case Type.K:
break;
case Type.L:
break;
case Type.M:
break;
case Type.N:
break;
case Type.O:
break;
case Type.P:
break;
case Type.Q:
break;
case Type.R:
break;
case Type.S:
break;
case Type.T:
break;
case Type.U:
break;
case Type.V:
break;
case Type.W:
break;
case Type.X:
break;
case Type.Y:
break;
case Type.Z:
break;

String にしたいときの入力例

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z , s

出力

case "A":
break;
case "B":
break;
case "C":
break;
case "D":
break;
case "E":
break;
case "F":
break;
case "G":
break;
case "H":
break;
case "I":
break;
case "J":
break;
case "K":
break;
case "L":
break;
case "M":
break;
case "N":
break;
case "O":
break;
case "P":
break;
case "Q":
break;
case "R":
break;
case "S":
break;
case "T":
break;
case "U":
break;
case "V":
break;
case "W":
break;
case "X":
break;
case "Y":
break;
case "Z":
break;

Char 用の入力例

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z , c

出力

case 'A':
break;
case 'B':
break;
case 'C':
break;
case 'D':
break;
case 'E':
break;
case 'F':
break;
case 'G':
break;
case 'H':
break;
case 'I':
break;
case 'J':
break;
case 'K':
break;
case 'L':
break;
case 'M':
break;
case 'N':
break;
case 'O':
break;
case 'P':
break;
case 'Q':
break;
case 'R':
break;
case 'S':
break;
case 'T':
break;
case 'U':
break;
case 'V':
break;
case 'W':
break;
case 'X':
break;
case 'Y':
break;
case 'Z':
break;

何もつけたくないときの入力例(Int とかで使うと思う)

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z ,

出力

case A:
break;
case B:
break;
case C:
break;
case D:
break;
case E:
break;
case F:
break;
case G:
break;
case H:
break;
case I:
break;
case J:
break;
case K:
break;
case L:
break;
case M:
break;
case N:
break;
case O:
break;
case P:
break;
case Q:
break;
case R:
break;
case S:
break;
case T:
break;
case U:
break;
case V:
break;
case W:
break;
case X:
break;
case Y:
break;
case Z:
break;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA