C++ 使用strcmp比较两个字符串的问题
我想比较2个字符串,但当我执行C++ 使用strcmp比较两个字符串的问题,c++,string,comparison,string-comparison,strcmp,C++,String,Comparison,String Comparison,Strcmp,我想比较2个字符串,但当我执行strcmp函数时,它告诉我: 'strcmp' : cannot convert parameter 1 from 'std::string' 我怎样才能解决这个问题 这是我的密码: int verif_file(void) { string ligne; string ligne_or; ifstream verif("rasphone"); ifstream original("rasphone.pbk"); whi
strcmp
函数时,它告诉我:
'strcmp' : cannot convert parameter 1 from 'std::string'
我怎样才能解决这个问题
这是我的密码:
int verif_file(void)
{
string ligne;
string ligne_or;
ifstream verif("rasphone");
ifstream original("rasphone.pbk");
while (strcmp(ligne, "[SynCommunity]") != 0 &&
(getline(verif, ligne) && getline(original, ligne_or)));
while (getline(verif, ligne) && getline(original, ligne_or))
{
if (strcmp(ligne, ligne_or) != 0)
return (-1);
}
return (0);
}
编译器会给您一个错误,因为它是一个C风格函数,需要类型为
const char*
的参数,并且没有从std::string
到const char*
的隐式转换
虽然您可以使用std::string
的c_str()
方法检索此类型的指针,但由于您使用的是对象,因此应该使用运算符=
:
if (ligne == ligne_or) ...
或与常量字符比较*:
if (ligne == "[Syn****]") ...
编译器会给您一个错误,因为它是一个C风格函数,需要类型为
const char*
的参数,并且没有从std::string
到const char*
的隐式转换
虽然您可以使用std::string
的c_str()
方法检索此类型的指针,但由于您使用的是对象,因此应该使用运算符=
:
if (ligne == ligne_or) ...
或与常量字符比较*:
if (ligne == "[Syn****]") ...
只需使用
std::string
:
只需使用
std::string
:
改变
到
改变
到
如果你想使用strcmp,那就试试吧
if (strcmp(ligne.c_str(), ligne_or.c_str()) != 0)
...
如果你想使用strcmp,那就试试吧
if (strcmp(ligne.c_str(), ligne_or.c_str()) != 0)
...
我喜欢boost算法库
#include <boost/algorithm/string.hpp>
std::string s1("This is string 1");
std::string s2("this is string 2");
namespace balg = boost::algorithm;
// comparing them with equals
if( balg::equals( s1, s2 ) )
std::cout << "equal" << std::endl;
else
std::cout << "not equal" << std::endl;
// case insensitive version
if( balg::iequals( s1, s2 ) )
std::cout << "case insensitive equal" << std::endl;
else
std::cout << "not equal" << std::endl;
#包括
std::字符串s1(“这是字符串1”);
std::string s2(“这是string 2”);
名称空间balg=boost::algorithm;
//将他们与平等者进行比较
if(balg::等于(s1,s2))
我喜欢boost算法库
#include <boost/algorithm/string.hpp>
std::string s1("This is string 1");
std::string s2("this is string 2");
namespace balg = boost::algorithm;
// comparing them with equals
if( balg::equals( s1, s2 ) )
std::cout << "equal" << std::endl;
else
std::cout << "not equal" << std::endl;
// case insensitive version
if( balg::iequals( s1, s2 ) )
std::cout << "case insensitive equal" << std::endl;
else
std::cout << "not equal" << std::endl;
#包括
std::字符串s1(“这是字符串1”);
std::string s2(“这是string 2”);
名称空间balg=boost::algorithm;
//将他们与平等者进行比较
if(balg::等于(s1,s2))
std::cout循环时第一个做什么?它几乎什么都不做,对吗?string
类的引入正是为了避免使用C str函数;)第一个而循环做什么?它几乎什么都不做,对吗?string
类的引入正是为了避免使用C str函数;)