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

  • leviosa@programming.dev
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    1 year ago

    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.

  • equidamoid@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    1 year ago

    Use std::string_view to sort of get the safety of std::string without copying the contents (just in general make sure the original c string won’t get freed or overwritten, which won’t happen to argv in your case).

    Or just std::string and yolo, the overhead of copying the contents is negligible in your use case.

      • SuperFola@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        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

          • SuperFola@programming.dev
            link
            fedilink
            English
            arrow-up
            2
            ·
            1 year ago

            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