im new in c++ and i am creating a version of cat for practicing what i have learned so far. What im doing for managing the command line arguments is converting them to library strings and then using them, but now i have the doubt if it is the correct / most optimal way to do it
You can quickly get the args into a vector like this:
auto args = std::vector<std::string_view>(argv, argv + argc);
Checking equality etc directly instead of using strcmp stuff is better. There are libraries available for handling command line args too.
Use
std::string_view
to sort of get the safety ofstd::string
without copying the contents (just in general make sure the original c string won’t getfree
d or overwritten, which won’t happen toargv
in your case).Or just
std::string
and yolo, the overhead of copying the contents is negligible in your use case.thank you
std::string_view
Small caveat:
std::string_view
was introduced in C++17. Not all projects made that jump yet.If they are just practicing it isn’t a problem, C++17 is already 6 years old and the open source community should get onboard imo
Last time I checked, over half of the C++ community was still using C++14 or older.
Jumping into the latest and greatest is only trivial in small pet projects. In professional settings this requires significant amounts of work.