#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 *)
答案 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