C++ 为什么我可以在stricmp()中使用char而不是string?

C++ 为什么我可以在stricmp()中使用char而不是string?,c++,C++,代码如下: char s[101], s1[101]; cin >> s >> s1; cout << stricmp(s, s1); chars[101],s1[101]; cin>>s>>s1; cout这是因为stricmp()没有将std::string值作为参数 改用 std::字符串s(“s”); std::字符串s1(“s1”); 如果(s.compare(s1)!=0)//或者如果(s!=s1) STD::CUT您可能想考虑在比较之前:将字符

代码如下:

char s[101], s1[101];
cin >> s >> s1;
cout << stricmp(s, s1);
chars[101],s1[101];
cin>>s>>s1;

cout这是因为
stricmp()
没有将
std::string
值作为参数

改用

std::字符串s(“s”);
std::字符串s1(“s1”);
如果(s.compare(s1)!=0)//或者如果(s!=s1)

STD::CUT

您可能想考虑在比较之前:将字符串转换为所有的上或下小写:

std::string s1;
std::string s2;
std::cin >> s1 >> s2;
std::transform(s1.begin(), s1.end(),
               s1.begin(),
               std::tolower);
std::transform(s2.begin(), s2.end(),
               s2.begin(),
               std::tolower);
if (s1 == s2)
{
  std::cout << "s1 and s2 are case insensitive equal.\n";
}
else
{
  std::cout << "s1 and s2 are different.\n";
}
std::字符串s1;
std::字符串s2;
标准:cin>>s1>>s2;
std::transform(s1.begin(),s1.end(),
s1.begin(),
标准:托洛尔);
std::transform(s2.begin(),s2.end(),
s2.begin(),
标准:托洛尔);
如果(s1==s2)
{

当你说“它不起作用”时,你能不能更具体一点你期望得到什么样的结果,你得到什么样的结果?仅仅因为我觉得你不知道它,而且它是相关的-你知道什么是
char*
吗?你可以将
s
s1
声明为
std::string
,而不是调用
stricmp(s,s1);
像调用
stricmp(s.c\str()一样调用它,s1.c_str())为什么代码不能用字符串来输入?为什么我不能把它们输入字符串呢?这表明你还不懂语言的基本知识。请从中学习语言的基本知识。对于C++中的大小写不敏感的字符串比较,参见<>代码>比较不是一个不区分大小写的比较,而ode>是。此外,在您的示例中,
比较
甚至不需要。如果(s!=s1)
@NathanOliver添加到示例中,您可以只编写

std::string s1;
std::string s2;
std::cin >> s1 >> s2;
std::transform(s1.begin(), s1.end(),
               s1.begin(),
               std::tolower);
std::transform(s2.begin(), s2.end(),
               s2.begin(),
               std::tolower);
if (s1 == s2)
{
  std::cout << "s1 and s2 are case insensitive equal.\n";
}
else
{
  std::cout << "s1 and s2 are different.\n";
}