gpt4 book ai didi

c++ - 字符串比较问题(C++)

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:58 25 4
gpt4 key购买 nike

问题已解决:StringVariable[position](在本例中为 Word[e])输出一个定义为 char 变量类型的值,而不是我预期的字符串变量类型。谢谢大家的帮助!

当我运行 Hangman 游戏时,出现以下错误:

Error 2 error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)

Error 1 error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)

4 IntelliSense: no operator "!=" matches these operands

3 IntelliSense: no operator "==" matches these operands

我在这个错误指向的代码中注释并复制了与问题相关的函数。然后在 main() 函数中运行这些函数以简化代码。

这部分代码是为了检查猜测是否等于单词中的字母。如果我需要提供进一步的解释,请告诉我。

相关代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

//Functions
void GrabWord();
void DiscoverLet();
void guess();

//Variables
int NumL, Fl, F, count[10];
string G, Word;

//Grab Word from .txt and define NumL
void GrabWord()
{
//Grab Random Line from .txt
//Random Line >> Larray
Word = "short";
NumL = Word.size();
}

//Checks if Guess matches any letters
void DiscoverLet()
{
for(int e = 0; e < NumL; e++)
{
//Error Points to the following two comparisons
if(G == Word[e])
{
count[e] = 1;
}
else if(G != Word[e])
{
Fl++;
}
else
{
cout << "Error: DiscoverLet(), G to Word[]\n";
}
}
if(Fl == NumL)
{
F = F + 1;
}
Fl = 0;
}

最佳答案

您正在寻找的正确字符串比较称为 find :

if(Word.find(G) > std::string::npos)
{
count[e] = 1;
}
else
{
Fl++;
}

你的比较不起作用的原因是你的 Word[e] 正在抓取字符串的 character 并且它正在与 string 变量进行比较。

从您的代码来看,您似乎想要计算字母在字符串中出现的次数。如果你想计算字母在字符串中出现的次数,那么你可以像这样使用查找函数:

int count = 0;
int foundIdx = 0;

for(int i = 0; i < NumL; i++)
{
foundIdx = Word.find(G, foundIdx+1);

if (foundIdx == std::string::npos)
{
break;
}

count++;
}

关于c++ - 字符串比较问题(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com