因此,我使这段代码可以从字母表中随机打印出一定数量的字符,并告诉用户从列表中选择的两个字符对的位置。我的问题是,我不断收到一些错误消息,告诉我没有“ 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";
}
}
答案 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>
在代码顶部。