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.
I’m not talking about professional projects. OP asked about making a pet project in C++.
Also, a lot of opensource software could jump forward in term of standard required ; I’m not saying that no professional project uses opensource library, just that we should start moving forward if we don’t want to get stuck with old versions