如何将字符添加到字符串中

Posted

技术标签:

【中文标题】如何将字符添加到字符串中【英文标题】:How to add a char into a string 【发布时间】:2015-11-29 21:20:09 【问题描述】:

所以我正在创建一个刽子手游戏并想将一个字符添加到一个字符串中。我想在gatherguess 字符串中添加一个猜测字符,直到gatherguess 匹配刽子手。随意在我的代码中添加一些有用的提示,这将使我变得更好。另外,如果您还可以给我一些具有动态内存分配的示例代码,那就更好了。

#include <stdio.h>
#include <string.h>
#include <iostream>     // std::cout

#include <stdio.h>
#include <string.h>
#include <iostream>     // std::cout
#include <algorithm>    // std::for_each
#include <vector>
#include <set>
#include <string>
bool isitdone(std::string foo, std::string hang)
    return foo == hang ? true : false ;


int main()
    std::string hangman;
    char guess;
    std::string gatherguess; //Get the letters guessed.
    std::cin >> hangman; //Player enter the word to guess.
    bool checkstatement; // Check to see if game is over.

    for(int i =0; i < 10; ++i) 
        std::cin >> guess; //Individual characters to guess
        std::string doo;
        int wordsin;
        doo = hangman;

        int y;
        if(doo.rfind(guess) != std::string::npos) 
            std::cout << "Right " << guess << " Is in the word"  << std::endl;

            std::cout << std::endl;

            checkstatement = isitdone(gatherguess,doo);// I want to add guess char into gatherguess 
            //then check to see if gatherguess is equal to the word then the game will be complete
            if(checkstatement == true) 
                    return 0;
            
         else 
            std::cout << "Wrong" << std::endl;
        
    
    return 0;

【问题讨论】:

这么多格式化你的代码...... Stack Overflow 不是免费的在线代码修复服务。首先展示您的调试工作!考虑在这里询问作为最后的手段,展示你为解决问题所做的所有努力,并清楚地说明你卡在哪里。以minimal reproducible example 开头,否则这里不欢迎您提出问题。 【参考方案1】:

首先,你应该用足够的占位符来初始化gatherguess

auto hangman = std::string;
std::cin >> hangman;

auto gatherguess = std::stringhangman.size(), '_';

现在您可以简单地覆盖“_”字符。

auto pos = hangman.find(guess)
if(pos != std::string::npos) 
    // ...

    do 
        gatherguess[pos] = guess;   // overwrite
        pos = hangman.find(guess, pos); // find next ocurrence
     while(pos != std::string::npos)

    // ...

【讨论】:

【参考方案2】:

我对您的代码进行了一些更改。它包含一些建议作为评论。

//#include <stdio.h> // Do not include a library if you don not use it, because it makes the performance worse.
//#include <string> // Do not include a library if you don not use it, because it makes the performance worse.
#include <iostream>     // std::cout
//#include <stdio.h> // It is pointless to include a library twice.
//#include <string.h>
//#include <iostream>     // std::cout
//#include <algorithm>    // std::for_each
//#include <vector> // Do not include a library if you don not use it, because it makes the performance worse.
//#include <set> // Do not include a library if you don not use it, because it makes the performance worse.
#include <string>

bool isitdone(const std::string& foo, const std::string& hang) // Passing argument by const reference makes performance much better.
    return foo == hang ? true : false ; // Indenting makes the code much more readable.


int main()
    const int N=10; // Store constant number in constant variable, because you can change its' value later easily.
    std::string hangman;
    char guess;
    std::string gatherguess; //Get the letters guessed.
    std::cin >> hangman; //Player enter the word to guess.
    bool checkstatement; // Check to see if game is over.

    for(int i =0; i < N; ++i)
    
        std::cin >> guess; //Individual characters to guess
        std::string doo;
        int wordsin;
        doo = hangman;
        int y;
        if(doo.rfind(guess) != std::string::npos)
        

            std::cout << "Right " << guess << " Is in the word"  << std::endl;

            std::cout << std::endl;

            checkstatement = isitdone(gatherguess,doo);// I want to add guess char into gatherguess
            //then check to see if gatherguess is equal to the word then the game will be complete
            if(checkstatement == true)
            
                return 0;
            
         else
        
            std::cout << "Wrong" << std::endl;
        
    
    return 0;

我认为您的程序存在逻辑错误。如果一个单词包含超过 10 个不同的字符会怎样?如果小费是正确的,不要计算。

您可以通过这种方式将字符添加到字符串中:

#include <iostream>
#include <string>

int main()
    std::string str="123";
    str+='4';
    std::cout<<str<<std::endl;

    return 0;

【讨论】:

以上是关于如何将字符添加到字符串中的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串字段添加到由流形成的字符串列表中

如何将字符串字段添加到由流形成的字符串列表中

如何将字符串添加到 C++ 中无序映射中的字符串向量

如何将字符串(单词)添加到字符串 [] 数组?Java,输入 [重复]

如何将 Python 字符串变量添加到 Python 中 SQL 字符串变量的一部分?

Python:如何将字符串“ub”添加到字符串中的每个发音元音?