ソースコード2を参考にして、1のソースコードを書き直したいと思っています。
アドバイスなど、ご教授いただければ幸いです。
参考にしたいソースコードは抜粋してきたため、分かりにくいかもしれませんがよろしくお願いします。
概要としては、コマンドラインで入力された引数引数とフォーマットとしてリストに入っている文字を比較して出力するソースコードです。
やりたい事:mainでCheck関数を呼び出せるようにしたいです。
c++
1/* 1,コマンドラインで入力された引数とリストの文字を比較するコード */ 2#include <iostream> 3#include <string> 4#include <sstream> 5#include <unordered_set> 6 7using namespace std; 8 9int main(int argc, char* argv[]) 10{ 11 /* 引数なしの場合、エラー表示 */ 12 if (argc < 2) 13 { 14 cout << "error : 引数がありません"; 15 return 1; 16 } 17 /* 使用可能な文字タイプ一覧 */ 18 /* 追加が発生した場合に追加する */ 19 unordered_set<string> chara_types = 20 { 21 "A", 22 "B", 23 "C" 24 }; 25 /* 引数を読み込む */ 26 istringstream iss(argv[1]); 27 for (string type; getline(iss, type, ',');) 28 { 29 if (chara_types.erase(type) != 1) 30 { 31 /* 文字タイプ一覧に存在しない場合 */ 32 cout << "error: 入力間違いです"; 33 return 2; 34 } 35 } 36 cout << "入力された文字 : " << argv[1]; 37 return 0; 38} 39
c++
1/* 2,参考にしたいコード Check関数 */ 2/* check_listはコマンドラインで入力された文字列です */ 3bool Check( std::string input, const char delimiter, std::vector<std::string>& chek_list ) 4{ 5 std::istringstream stream(input); 6 std::string field, result; 7 8 while (std::getline(stream, field, delimiter)) 9 { 10 auto result_find = std::find( check_list.begin(), chek_list.end(), field); 11 12 /* 引数に重複がある */ 13 if (result_find != check_list.end()) 14 { 15 printf("--check error. duplicate check-name=[%s]", field.c_str()); 16 return false; 17 } 18 // チェックリストに追加 19 check_list.push_back(field); 20 } 21 return true; 22} 23
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/06 14:21
2020/07/06 14:39
2020/07/06 15:52
2020/07/06 16:17
2020/07/07 06:16
2020/07/07 06:35