C++ Compare char array with string

后端 未结 6 1765
悲哀的现实
悲哀的现实 2020-11-29 05:06

I\'m trying to compare a character array against a string like so:

const char *var1 = \" \";
var1 = getenv(\"myEnvVar\");

if(var1 == \"dev\")
{
   // do stu         


        
6条回答
  •  不知归路
    2020-11-29 05:38

    There is more stable function, also gets rid of string folding.

    // Add to C++ source
    bool string_equal (const char* arg0, const char* arg1)
    {
        /*
         * This function wraps string comparison with string pointers
         * (and also works around 'string folding', as I said).
         * Converts pointers to std::string
         * for make use of string equality operator (==).
         * Parameters use 'const' for prevent possible object corruption.
         */
        std::string var0 = (std::string) arg0;
        std::string var1 = (std::string) arg1;
        if (var0 == var1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    

    And add declaration to header

    // Parameters use 'const' for prevent possible object corruption.
    bool string_equal (const char* arg0, const char* arg1);
    

    For usage, just place an 'string_equal' call as condition of if (or ternary) statement/block.

    if (string_equal (var1, "dev"))
    {
        // It is equal, do what needed here.
    }
    else
    {
        // It is not equal, do what needed here (optional).
    }
    

    Source: sinatramultimedia/fl32 codec (it's written by myself)

提交回复
热议问题