【发布时间】:2018-06-18 19:36:51
【问题描述】:
我很抱歉这个简单的问题,但我不明白为什么这个简单的程序不起作用。
除了"a",a[0] 应该是什么?
#include <iostream>
using namespace std;
int main(){
string a = "abcd";
string b = "a";
if (a[0]==b){//<------problem here
cout << a << endl;
}
return 0;
}
返回错误
'operator==' 不匹配(操作数类型为'char' 和'std::__cxx11::string {aka std::__cxx11::basic_string
}')
或者简单地使用string c=a[0];会返回错误:
要求从“char”转换为非标量类型“std::__cxx11::string {aka std::__cxx11::basic_string
}”
PS:在尝试了一些事情之后,如果我比较a[0]==b[0] 或分配c[0]=a[0],我可以让它工作,因为它们现在绝对是同一类型,但我仍然想知道标准和/或在 C++ 中将子字符串与另一个字符串进行比较的最快方法是。
【问题讨论】:
-
what is a[0] supposed to be other than "a"?嗯,可能是字符'a'。 -
这很好用,因为它们是相同的类型,但我想测试一个像 a[0]==b 这样的子字符串是否失败,因为它们是不同的类型。那么a[0]是什么类型呢?
-
您是在寻找字符串中任意长度的通用子字符串,还是试图快速找到长度正好为 1 的子字符串在字符串中?第二种情况类似于在字符串中查找
char。 -
A
std::string是char的字符串,因此string的任何索引都是char -
查看所有回复后,我现在的问题是,如果我定义 char c="a"; a[0]==c;如果 a[0] 是字符,则返回错误。