c++ - strcmp和==的区别?
怪我咯
怪我咯 2017-04-17 15:24:40
0
2
677

Example:

    char alpha;
    scanf("%c", &alpha);
    if (strcmp(&alpha, "c") == 0) //if (alpha == 'c')
    {
        printf("same");
    }
    else
    {
        printf("different");
    }

man page上的 description也没有讲具体

The strcmp() function compares the two strings s1 and s2. It returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2.

我谷歌了, 但只找到了http://stackoverflow.com/ques... , c 部分感觉不是很详细, 想在这里请教下大家这两者实现机制的区别与效率

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(2)
黄舟

strcmp是用來判斷char*類型的字串是否相等的,char*字串其實就是字串的首位址。
而==是直接判斷左邊和右邊是否相等,如果用==來判斷char*字串的話,就是相當於比較他們的首地址,這當然無法判斷字串的值是否一致了。
而如果是std::string,因為已經重載了==運算符,所以可以直接用==比較。
另外std::string有const char*的建構函數,平常可以用string("abc") == "abc"是因為符合string的==運算子時,後面的abc發生了隱式型別轉換。

巴扎黑

可以問一下,你用 == 是怎麼比較兩個字串的?有程式碼範例嗎?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板