質問: ',') { cout << "error: 入力間違いです"; return 3; } } cout << "入力された文字 : " << argv[1]; return 0; } ```
回答: 引数に空白を入力した場合、argc が 3以上になります。 $ ./a.out A,B の場合、argc=2, argv[1]="A,B" $ ./a.out A B の場合、argc=3, argv[1]="A", argv[2]="B" $ ./a.out "A B" の場合、argc=2, argv[1]="A B" ``` #include #include #include #include using namespace std; int main(int argc, char* argv[]) { if (argc < 2) { cout << "error : 引数がありません\n"; return 1; } if (argc > 2) { cout << "error : 空白は区切りに使えません\n"; return 2; } unordered_set chara_types = { "A", "B", "C" }; string s = argv[1]; if (s.size() > 0 && s[s.size()-1] == ',') { cout << "error : 入力間違いです\n"; return 3; } istringstream iss(argv[1]); while (getline(iss, s, ',')) { if (chara_types.erase(s) != 1) { cout << "error: 入力間違いです\n"; return 4; } } cout << "入力された文字 : " << argv[1] << "\n"; return 0; } ```