如何将字符串与向量值进行比较
How do you compare a string to a vector value?
如何在 a 中与 vector<std::string> 中的值进行字符串比较?
我尝试了str,错误打印在下面。
.....
vector<std::string> dat;
vector<std::string> pdat;
dat = my();
for(int b = 2; b < dat.size(); b+=7){
// cout << dat[b] << " " << endl;
if(!strcmp(dat[b], "Stringn"){ // The error is here
pdat.push_back(dat[b]);
}
}
my.cpp: 在函数 'std::vector> ngr()' 中:
my.cpp:53:32:错误:无法将参数"1"的"__gnu_cxx::__alloc_traits>>:value_type {aka std::basic_string}"转换为"const char*",用于参数"1"到"int strcmp(const char*,const char*)"
std::string
与普通==
进行比较。这是有效的,因为 ==
运算符重载以对 std::string
s 进行字符串比较。
if (dat[b] == "Stringn") {
如果你正在处理C++字符串,你不应该需要 string.h 中的任何 str* 函数,所以你最好根本不包含它。
只需使用 operator==
on 来比较std::string
和const char*
:
if(dat[b] == "Stringn"){ //
pdat.push_back(dat[b]);
}
作为记录,这里使用的确切重载是函数模板:
template< class CharT, class traits, class Alloc >
bool operator==( const basic_string<CharT,Traits,Alloc>& lhs, const CharT* rhs );
strcmp
(你在这里不需要,在C++中很少需要)期望const char*
参数:
int strcmp( const char *lhs, const char *rhs );
所以你可以(但不应该)在c_str()
成员函数的帮助下调用它:
if(!strcmp(dat[b].c_str(), "Stringn")
...
strcmp()
期望 2 const char*
秒,但dat[b]
是string
,所以你不是在比较苹果和苹果。
你可以做
if(!strcmp(dat[b].c_str(), "Stringn"){
或
if (dat[b] == "Stringn") {
二是比较C++的方法。
相关文章:
- C++ 如何比较n个排序的整数向量以找到互元素?
- C++ 向量与用户定义的类比较?(==, <, >)
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 在C++中比较来自向量的字符串时出现分段错误
- 比较向量中的元素时所花费的时间呈指数级增长
- (C++) 学习向量 - 编码/输入流终止/比较向量的问题
- C++比较向量和列表
- 比较向量元件的运行时间复杂性的提高
- 比较向量中元素的最有效、最快捷的方法
- 单词比较 - 向量/getopt
- 如何递归比较向量
- C++ 比较向量<string> X 与字符串 S
- 比较向量的元素
- 比较C++向量的最快方法是什么?
- 比较向量<string>内的线
- 有效的比较向量的方法
- 如何在Eigen中近似比较向量
- 如何以特定的方式高效地比较向量和数组
- 比较向量和添加缺失的元素