不断收到错误代码:“ Ltrl == r_string [i]”中的“ operator ==”不匹配

时间:2019-04-05 17:38:25

标签: c++

因此,我使这段代码可以从字母表中随机打印出一定数量的字符,并告诉用户从列表中选择的两个字符对的位置。我的问题是,我不断收到一些错误消息,告诉我没有“ operator ==”匹配项;如此;我希望有人可以告诉我我做错了什么以及如何解决此问题。

这是我的代码和我收到的错误的屏幕快照。 enter image description here

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main() {

int n;
string Ltr1, Ltr2;
int i=0;
char alphabet[26];
char r_string[200];
srand(time(0));

cout << "How many letters do you want in your random string (no less than 0, no more than 100): ";
 cin >> n;

for (int i=0; i<=25; i++)
 alphabet[i] = 'a' + i;

while(i<n) {
    int temp = rand() % 26;
    r_string[i] = alphabet[temp];
    i++;
}

for(i=0; i<n; i++)
    cout<<r_string[i];
    cout<<"\n\n";

cout<<"\n\n What letter pair would you like to find? ";
cin>>Ltr1>>Ltr2;

 for (i=0; i<n; i++)
  if ((Ltr1 == r_string[i]) && (Ltr2 == r_string[i+1])) {
    cout<<" The pair is in the string starting at character number"<<i+1<<" in the string. \n";
}else{
    cout << "The letter pair "<< Ltr1, Ltr2 <<" is not in this string. \n";
    }
}

2 个答案:

答案 0 :(得分:1)

在C ++中,涉及非指针的运算符(例如Light Theme<!-- Toolbar/NoActionBar variant of default Light Theme --> <style name="AppTheme_Light_NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/pure_white_transparent</item> <item name="colorPrimaryDark">@color/pure_white_transparent</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowActionBarOverlay">true</item> <item name="android:windowTranslucentStatus">false</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:statusBarColor">@color/pure_white_transparent</item> <item name="android:windowLightStatusBar">true</item> <item name="android:navigationBarColor">@color/pure_white</item> <item name="android:windowLightNavigationBar">true</item> </style> ==等)必须在某处定义和实现(还有non-fundamental types的问题,但这超出了此问题的范围)。例如,采用以下代码:

!=

在这种情况下,您尝试比较+#include <string> int main() { std::string my_str = "Hello world!", other_str = "Hello!"; const char *my_c_str = "Hello world!", my_char = 'H'; my_str == other_str; //OK: calls operator==(std::string, std::string) my_str[0] == my_char; //OK: calls operator==(char, char) my_str == my_c_str; //OK: calls operator==(std::string, char*) my_str == my_char; //bad: attempts to call operator==(std::string, char), which is not defined } (与operator==)-这两种类型的运算符在任何地方都没有定义。问题源于以下事实:标准库(或您)没有定义std::string和单个char不是 c字符串)之间的比较。也许是因为这样的比较如何工作尚不明显。

如果要比较字符串和c字符串,可以简单地使用std::string进行比较-或者,如果要手动比较各个字符,则可以类似的方式进行每个比较(每个人char)。

答案 1 :(得分:0)

尝试添加

#include <string> 

在代码顶部。