C++ 如何将字符串与向量值进行比较?
如何将向量中的字符串与向量中的值进行比较 我尝试了str,错误显示在下面C++ 如何将字符串与向量值进行比较?,c++,string,c++11,vector,C++,String,C++11,Vector,如何将向量中的字符串与向量中的值进行比较 我尝试了str,错误显示在下面 矢量数据; 向量pdat; dat=my(); 对于(int b=2;b比较。这是因为=< /COD>操作符被重载,以便对 STD::String < /Calp>S.< /P>进行字符串比较。 if (dat[b] == "String\n") { 如果您处理的是C++字符串,则不需要任何字符串Str*函数,因此您也可以不包括它。 < P>简单地使用运算符==/COD>比较一个 STD::String < /C> >
矢量数据;
向量pdat;
dat=my();
对于(int b=2;b //coutstd::string
与普通的=
进行比较。这是因为=
操作符被重载以对std::string
进行字符串比较
if (dat[b] == "String\n") {
如果您处理的是C++字符串,则不需要任何字符串Str.h函数,所以您也可以不包括它。
<代码> STD::String 与Prime<代码>=< /Cord>比较。这是因为<代码>=< /COD>操作符被重载,以便对<代码> STD::String < /Calp>S.< /P>进行字符串比较。
if (dat[b] == "String\n") {
如果您处理的是C++字符串,则不需要任何字符串Str*函数,因此您也可以不包括它。
< P>简单地使用<代码>运算符==/COD>比较一个<代码> STD::String < /C> >和<代码> const char */COD>:
if(dat[b] == "String\n"){ //
pdat.push_back(dat[b]);
}
对于记录,此处使用的确切重载是函数模板:
template< class CharT, class traits, class Alloc >
bool operator==( const basic_string<CharT,Traits,Alloc>& lhs, const CharT* rhs );
因此,您可以(但不应该)在c_str()
成员函数的帮助下调用它:
if(!strcmp(dat[b].c_str(), "String\n")
...
只需使用operator==
on来比较std::string
和const char*
:
if(dat[b] == "String\n"){ //
pdat.push_back(dat[b]);
}
对于记录,此处使用的确切重载是函数模板:
template< class CharT, class traits, class Alloc >
bool operator==( const basic_string<CharT,Traits,Alloc>& lhs, const CharT* rhs );
因此,您可以(但不应该)在c_str()
成员函数的帮助下调用它:
if(!strcmp(dat[b].c_str(), "String\n")
...
strcmp()
需要2个const char*
s,但dat[b]
是一个字符串,因此您不能将苹果与苹果进行比较
你可以这样做
if(!strcmp(dat[b].c_str(),“String\n”){
或
if(dat[b]=“String\n”){
第二种是C++方法。<>代码> STRMP()期望2代码> const char */COS> s,但是<代码> dAT[b] < /Cord>是String < /C> >,所以你不把苹果和苹果比较。
你可以这样做
if(!strcmp(dat[b].c_str(),“String\n”){
或
if(dat[b]=“String\n”){
第二个是C++的方法。