C++字符串比较 strcmp

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string word="jia";
string word1="jie";
cout<<strcmp(word,word1);
}
为什么cout<<strcmp(word,word1);这行编译不能通过呢?

strcmp 是用来比较两个C字符串(即char数组),参数类型都是char*,所以不能直接拿string作为参数。

可以用<cstring>,但写成cout<<strcmp(word.c_str(), word1.c_str()); string类型的c_str()函数会将string中的字符串转为const char*

扩展资料:

例题:编写一个程序,它使用char数组和循环来每次从键盘读取一个单词,直到用户输入done为止。随后该程序指出用户输入了多少个单词。

#include <iostream>

#include<cstring>

int main(){

using namespace std;

const int size = 20;

char ch[size] ;

int i = 0;

cout<<"Enter words(to stop with word done)"<<endl;

cin>>ch;

while (strcmp(ch,"done"))

/*字符串之间的比较, 相同返回0. 左<右,返回负数。cmp是compare的缩写*/

{

i++;

cin>>ch;}

cout<<"You entered a total of "<<i<<" words."<<endl;

}

下面是用string类完成上述例题的代码

#include<iostream>

#include<string>

using namespace std;

int main(){

string str;

int i = 0;

cout<<"Enter words (to stop,with word done)"<<endl;

cin>>str;

while(str != "done")//注意和上面的区别

{

cin>>str;

i++;

}

cout<<"You entered a total of "<<i<<" words."<<endl;

return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-12
strcmp 是用来比较两个C字符串(即char数组),参数类型都是char*,你拿两个string类型的变量作为参数,当然出错啦。比较两个string类型变量是否相等,不需要用strcmp,直接用==就可以了。本回答被提问者采纳
第2个回答  2011-07-12
如果没有记错 <cstring>里定义的strcmp的参数是char*
所以不能直接拿string作为参数
可以直接include <string>, string里面也定义了strcmp,而且是以string为参数的
或者使用<cstring>,但写成cout<<strcmp(word.c_str(), word1.c_str()); string类型的c_str()函数会将string中的字符串转为const char*
第3个回答  2018-05-31
用 strncmp()比较。 string 变 char 用 s1.c_str():
#include <iostream>
using namespace std;
#include <cstring>
int main()
{
string s1="12:00:00", s2="12:00:10";
int ret;
if (strncmp(s1.c_str(),s2.c_str(),5)==0) ret=1; else ret=0;
cout << "ret=" << ret << endl;

return 0;
}
第4个回答  2011-07-12
你#include<cstring>中的有错,是#include<string>,里面没有c。
我希望你能改为下面的比较好:
#include<iostream.h>

#include<string.h>
试试看行不行!

希望能帮助你!

请问C++中 if(!strcmp(A,B)) 中的!strcmp代表什么意思
strcmp(s1,s2)为字符串比较函数,比较的是从字符串的第一个字符开始比较他的ASCLL码值,跟字符串的长度无关。当s1 > s2 时,返回值 > 0 当s1 = s2 时,返回值 = 0 当s1 < s2时,返回值 < 0 ! 为逻辑非运算符,即当值为真时改成假,值为加时改成真 在程序设计的判断真假中0为假,...

C++字符串比较 strcmp
strcmp 是用来比较两个C字符串(即char数组),参数类型都是char*,所以不能直接拿string作为参数。可以用<cstring>,但写成cout<<strcmp(word.c_str(), word1.c_str()); string类型的c_str()函数会将string中的字符串转为const char

c++字符串比较是否相等?
比较C++中的字符串是否相等,主要依赖于strcmp函数。该函数直接比较两个字符串的字符序列,从而判断其是否完全相同。使用时,确保两个比较的字符串具有相同长度,并且字符顺序一致。然而,编译器可能在优化时将相同的字符串字面量存储在同一个内存位置,但这并不意味着它们可以直接相互比较或共享。始终使用st...

比较字符串字典序的三种方法【C++】
在C语言中,我们能够使用strcmp()函数来比较char*类型字符串的字典序。当在C++中进行字符串比较时,我们可以采用compare()函数,该函数同样能够比较char*类型和string类型字符串的字典序。值得注意的是,compare()函数和strcmp()函数在返回值上保持一致。此外,C++中还有个简便的方法,即使用比较运算符来比...

C++ strcmp函数怎么用?strcmp函数的使用方法与原理
如果两个字符数组的长度不一致,strcmp函数会比较直到遇到数组末尾的空字符,空字符的ASCII码为0。一旦遇到空字符,strcmp会立即返回非零值,表明字符串长度不相等。值得注意的是,strcmp函数的返回值为0时,表示两个字符串完全相同,而非0表示不同。因此,在实际应用中,需要使用!操作符对返回值进行逻辑...

C++ 写一个函数,实现两个字符串的比较,即自己写一个strcmp函数
for (; p2[q] != '\\0'; q++);if (i == q) \/\/你这样只是比较了两个字符串的字符数是否一样,而不是比较字符是否一样 return 0;else return(int(p1[0] - p2[0]));} 正确的应该如下:int strcmp(char*p1, char*p2){ int i = 0;for (; p1[i] != '\\0'; i++) ;...

c\/c++比较字符串的大小
可以使用库函数strcmp判断,具体如下:strcmp是C语言比较字符串的库函数,形式为int strcmp(char *a, char *b);该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。所以,要判断字符串相等,可以使用。

C++中判断两个字符串是否相等,怎么判断
1、c++中可以用strcmp()函数的判断两个字符串是否相等。具体的方法,首先打开一个空白的c++文件:2、在C++文件里编写判断字符串的示例程序,这里在程序中输入两个字符串,之后程序会使用strcmp()函数判断是否为相同的字符串,最后程序会输出判断的结果:3、最后用编辑器运行程序,在弹出的窗口中,输入两...

c++ strcmp字符比较求教!!!
e比m小,所以前一个字符串比后一个小,输出负数,没错啊~~ Return Value The return value for each of these functions indicates the lexicographic relation of string1 to string2. Value Relationship of string1 to string2 < 0 string1 less than string2 0 string1 identical to string...

用C++实现strcmp的功能,字符串s和t比较,相等返回0,不相等返回ASCII的差值...
回答:(1) i <= strlen(s) && i <= strlen(t) (2) s[i] == 0 && t[i] == 0 (3) if (s[i] != t[i]) return s[i] - t[i];

相似回答