strcasecmp。无法解决的错误消息

时间:2017-04-16 18:49:38

标签: c++ c++11

#include <strings.h>
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main()
{
    string s = "test";
    if(strcasecmp(s, "TEST"))
        cout << "equals"<< endl;

    return 0;
}

如何使用strcasecmp需要帮助,当我尝试编译时,编译器会显示错误信息

  

错误:无法将'std :: string {aka std :: basic_string}'转换为'const char *'以将参数'1'转换为'int strcasecmp(const char *,const char *)

4 个答案:

答案 0 :(得分:4)

strcasecmp需要const char*,而不是std::string作为参数。改为使用strcasecmp(s.c_str(), "TEST"),或者首先让s成为C风格的字符串。

答案 1 :(得分:3)

这意味着strcasecmp期望C样式字符串(0终止char[])而不是C ++ string。您可以使用s.c_str()获得一个。

答案 2 :(得分:3)

strcasecmp()函数需要指向以null结尾的char字符串的指针,您无法直接将std::string传递给它。

使用它的正确方法应该是:

strcasecmp(s.c_str(), "TEST")

此外,代码在程序中看起来不正确,因为strcasecmp()在字符串相等的情况下返回ZERO。所以,你应该使用以下内容:

if(strcasecmp(s, "TEST") == 0)
    cout << "equals"<< endl;

答案 3 :(得分:1)

你可以尝试

double d = 9.2233760368E11;

System.out.println(format(d, 5, 1));

>> 9.22338E11