我非常接近完成任务,在那里我被指示创造一个财富游戏之轮。
我需要做的最后一件事是,让游戏板打印正确数量的空格和破折号猜对了。
用户在游戏开始时输入一个字符串,我们说它是string
我希望此功能创建一个新的"----- -----"
,即const char*
。
我想,我有什么工作,但是当我尝试编译时,我从char
转换为secret
无效。
此处就是我所拥有的:string
是用户为游戏输入的guess
,hidden
是玩家猜到的字母,void show_board(string &guess, string &secret, string &hidden)
{
for(int q=0; q < secret.length ; q++)
{
if(secret.at(q) == " ")
{
hidden.at(q) == " ";
}
else
{
hidden.at(q) == "-";
}
}
}
是我试图创建的带有破折号和空格的新字符串。
if
我刚才意识到,for
部分确实是多余的,但我的问题仍然存在。
因此对于我现在拥有的for(int q=0 ; q < secret.length() ; q++)
{
if(secret[q]==' ')
{
hidden += " ";
}
else if(guess == secret[q])
{
hidden += guess;
}
else
{
hidden += "-";
}
}
循环:
guess
而且,我在使用for( int a = 0; a < **b**; a = a + 1 )
{
// your code goes here
}
的行中收到错误,其中包含:
错误与&#39;运营商==&#39;不匹配in&#39; guess ==((std :: string *)secret) - &gt; std :: basic_string&lt; _CharT,_Traits,_Alloc&gt; :: operator [] [with _CharT = char,_traits = std :: char_traits, _Alloc = std :: allocator](((long unsigned int)q))&#39;
答案 0 :(得分:1)
尝试将双引号切换为单引号。双引号用于字符串文字,但在这种情况下你要与字符进行比较。
答案 1 :(得分:0)
这里有几个输入:
hidden.at(q)==&#34; - &#34; 。这实际上是比较而不是分配然后&#34;&#34;用于字符串而不是字符。可以是,将代码修改为:hidden.at(q)=&#39; - &#39;
std :: string.at(x)为您提供const_char,并为其分配非const值(&#39; - &#39;)。需要进行类型转换()
尝试使用std :: string :: npos
希望这些帮助。
答案 2 :(得分:0)
您的问题,未说明应如何使用guess
,因此,我更正了要为其创建的show_board
函数来自"----- -----"
的{{1}}分别使用"hello world"
和hidden
。
以下是代码:
secret
此处,void show_board(string &guess, string &secret, string &hidden)
{
hidden = "";
for(int q=0; q < secret.length ; q++)
{
if(secret[q] == ' ')
{
hidden += " ";
}
else if(secret[q] == guess[0]) // assuming guess.length == 1
{
hidden += guess;
}
else
{
hidden += "-";
}
}
}
运算符与+=
数据类型一起使用时,会提供连接的功能。
此外,string
运算符在给定[index]
处从char
得到string
,因此与index
进行比较,' '
应使用1}}代替char
。
注意:此处,没有跟踪已经猜到了多少个字符。
修改强>
要解决上面注释中的问题,我建议您先创建一个单独的" "
函数来生成initialize_hidden
字符串,然后将hidden
字符串用于所有后续猜测,使用hidden
函数,如:
show_board