创建一个由空格(_)和基于另一个字符串的空格组成的字符串

时间:2016-02-15 04:56:42

标签: c++ string

我非常接近完成任务,在那里我被指示创造一个财富游戏之轮。

我需要做的最后一件事是,让游戏板打印正确数量的空格破折号猜对了。

用户在游戏开始时输入一个字符串,我们说它是string

我希望此功能创建一个新的"----- -----",即const char*

我想,我有什么工作,但是当我尝试编译时,我从char转换为secret无效。

此处就是我所拥有的:string是用户为游戏输入的guesshidden是玩家猜到的字母,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;

3 个答案:

答案 0 :(得分:1)

尝试将双引号切换为单引号。双引号用于字符串文字,但在这种情况下你要与字符进行比较。

答案 1 :(得分:0)

这里有几个输入:

  1. hidden.at(q)==&#34; - &#34; 。这实际上是比较而不是分配然后&#34;&#34;用于字符串而不是字符。可以是,将代码修改为:hidden.at(q)=&#39; - &#39;

  2. std :: string.at(x)为您提供const_char,并为其分配非const值(&#39; - &#39;)。需要进行类型转换()

  3. 尝试使用std :: string :: npos

  4. 限制字符串的循环

    希望这些帮助。

答案 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