C++ Tictaoe游戏无操作员“==&引用;匹配这些操作数

C++ Tictaoe游戏无操作员“==&引用;匹配这些操作数,c++,string,printf,iostream,tic-tac-toe,C++,String,Printf,Iostream,Tic Tac Toe,这可能是非常低效和混乱,但这是我的问题-它说的东西,如“zz==defo&&zo==defo”的等号用红色下划线表示错误:没有运算符“==”匹配这些操作数,当我运行时,我得到一个错误,它太长,无法在这里发布- 我做错了什么?提前谢谢 这是我的密码- #include <iostream> #include <cstdlib> // for rand() and srand() #include <ctime> // for time() using names

这可能是非常低效和混乱,但这是我的问题-它说的东西,如“zz==defo&&zo==defo”的等号用红色下划线表示错误:没有运算符“==”匹配这些操作数,当我运行时,我得到一个错误,它太长,无法在这里发布-

我做错了什么?提前谢谢

这是我的密码-

#include <iostream>
#include <cstdlib> // for rand() and srand()
#include <ctime> // for time()
using namespace std;

string random1(){
    srand(((time(0) - 23) * time(0)) - (9*time(0)));
  if (rand() % 2 == 0){
    return "1";
        } else {
            return "0";
        }
}
string random2(){
    srand((((time(0) - 89) * time(0)) - (9*time(0)) / 3) - 99);
  if (rand() % 2 == 0){
    return "1";
        } else {
            return "0";
        }
}
int main(){
    string zz = "-";
    string zo = "-";
    string zt = "-";
    string oz = "-";
    string oo = "-";
    string ot = "-";
    string tz = "-";
    string to = "-";
    string tt = "-";
    for(int a = 1;a<=9;a++){
        srand ( time(NULL) - 8 );
        int ran1 = rand() % 3;  
        srand ( time(NULL) * 2);
        int ran2 = rand() % 3;
        int tote = (ran1 * 10) + ran2;
        cout << endl << "format- 0 = zero, 1 = one, 2 = two" << endl;
        int input;
        cin >> input;
        if(input == 00){
            zz = "X";
        } else if(input == 01){
            zo = "X";
        } else if(input == 02){
            zt = "X";
        } else if(input == 10){
            oz = "X";
        } else if(input == 11){
            oo = "X";
        } else if(input == 12){
            ot = "X";
        } else if(input == 20){
            tz = "X";
        } else if(input == 21){
            to = "X";
        } else if(input == 22){
            tt = "X";
        }
        // now for the computers part
        if(tote == 00){
            zz = "O";
        } else if(tote == 01){
            zo = "O";
        } else if(tote == 02){
            zt = "O";
        } else if(tote == 10){
            oz = "O";
        } else if(tote == 11){
            oo = "O";
        } else if(tote == 12){
            ot = "O";
        } else if(tote == 20){
            tz = "O";
        } else if(tote == 21){
            to = "O";
        } else if(tote == 22){
            tt = "O";
        }
        printf ("|%d|%d|%d", zz, zo, zt);
        cout << endl;
        printf ("|%d|%d|%d", oz, oo, ot);
        cout << endl;
        printf ("|%d|%d|%d", tz, to, tt);

        if(zz == "X" && zo == "X" && zt == "X" || oz == "X" && oo == "X" && ot == "X" || tz == "X" && to == "X" && tt == "X" || zz == "X" && oz == "X" && tz == "X" || zo == "X" && oo == "X" && to == "X" || zt == "X" && ot == "X" && tt == "X" || zz == "X" && oo == "X" && tt == "X"){
            cout << endl << "X WINNER";
        break;
        }
        if(zz == "O" && zo == "O" && zt == "O" || oz == "O" && oo == "O" && ot == "O" || tz == "O" && to == "O" && tt == "O" || zz == "O" && oz == "O" && tz == "O" || zo == "O" && oo == "O" && to == "O" || zt == "O" && ot == "O" && tt == "O" || zz == "O" && oo == "O" && tt == "O"){
            cout << endl << "O WINNER";
            break;
        }
    }
    system("pause");
    return 0;
}
#包括
#包括//for rand()和srand()
#包括//for time()
使用名称空间std;
字符串1(){
srand((时间(0)-23)*时间(0))-(9*时间(0));
如果(rand()%2==0){
返回“1”;
}否则{
返回“0”;
}
}
字符串2(){
srand(((时间(0)-89)*时间(0))-(9*时间(0))/3)-99);
如果(rand()%2==0){
返回“1”;
}否则{
返回“0”;
}
}
int main(){
字符串zz=“-”;
字符串zo=“-”;
字符串zt=“-”;
字符串oz=“-”;
字符串oo=“-”;
字符串ot=“-”;
字符串tz=“-”;
字符串至=“-”;
字符串tt=“-”;
对于(int a=1;a,您需要
#包括
,其中定义了


而且,正如前面所述,您正在将
std::string
传递给
printf()
:使用
cout
(正如您已经使用的那样)。

您正在尝试将
std::string
传递给
printf
,这是一个C库函数。此外,格式字符串表示您将传递整数(
“|d |%d |%d”

printf
将只接受c样式的字符串,因此如果这是您想要的,您可以这样说:

printf("|%s|%s|%s", ot.c_str(), zz.c_str(), ...);

也与您的代码有关

if(zz == "X" && zo == "X" && zt == "X" || oz == "X" && oo == "X" && ot == "X" || tz == "X" && to == "X" && tt == "X" || zz == "X" && oz == "X" && tz == "X" || zo == "X" && oo == "X" && to == "X" || zt == "X" && ot == "X" && tt == "X" || zz == "X" && oo == "X" && tt == "X"){
        cout << endl << "X WINNER";
“X”X”和“X”以及以及zt==“X”X”以及以及以及zt==“X”X”X”以及X”X”以及以及O==“X”X”以及以及X”X”X”以及以及以及以及以及ot==“X”X”以及以及假如假如假如要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是要是上述上述上述的假如假如假如,,,以及以及以及以及以及以及以及以及以及以及以及假如假如假如假如X X X X X,以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及ot的ot=====“X X,以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及以及若若若若若X“&&tt==“X”){
把AND放在括号里可能会使它更可读,但它们的优先级确实比OR高。哦…嗯,我的错,我以为它们和你看到的(zt==“X”| oz==“X”)和&(zo==“X”)处于同一水平。甚至我也从中学到了一些东西:-DDon't call
srand()
每次需要一个随机数时。只需调用int一次,然后再调用
rand()
if((zz == "X" && zo == "X" && zt == "X") || (oz == "X" && oo == "X" && ot == "X") || (tz == "X" && to == "X" && tt == "X") || (zz == "X" && oz == "X" && tz == "X") || (zo == "X" && oo == "X" && to == "X") || (zt == "X" && ot == "X" && tt == "X") || (zz == "X" && oo == "X" && tt == "X")){
        cout << endl << "X WINNER";