#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;
}