0

数字を文字ごとに変更する方法を知りたいのですが、数字1を次:x: のコードに置き換えたいのですが、コードは次のとおりです。

string stng;

printf("Enter with number:");
cin >> stng;

replace(stng.begin(), stng.end(), '1', 'x');

cout << stng << endl;

ご覧のとおり、これを使用して置き換えていますが、 forreplace(stng.begin(), stng.end(), '1', 'x'); のみを変更できるようになったら、 for を置き換えたいと思います1x:x:

4

4 に答える 4

0

replaceのメンバー関数を使用すると、より適切に行うことができますstd::string

auto pos = stng.find("1"); // search for 1 in the string
if (pos!=stng.npos)  // check if 1 is found
{
   stng.replace(pos, 1, ":x:");   // replace ":x:" starting from 'pos' to 'pos+1'
}

そして、あなたの仕事は終わりました!!!

于 2015-12-11T06:44:59.410 に答える
0

この関数を使用して、delim によって文字列'1'をトークンに分割できます。split

":x:"次に、次の関数を使用して文字列をマージします

std::string merge(const std::vector<std::string>& v, const std::string& glue)
{    
    std::string result;
    if(v.empty()) { return result; }
    result += v[0];
    for(size_t i = 1; i != v.size() ; i++)
    {
        result += glue;
        result += v[i];
    }
    return result;
}

std::string replace(const std::string& src, char delim, const std::string& glue)
{
    return merge(split(src, delim), glue); 
}

ライブはこちら

于 2015-12-11T07:46:48.927 に答える
0

これが私が使用するものです。を取り、入力文字列のすべての出現箇所を入力文字列にstd::string置き換えます。fromto

std::string replaceAll(const std::string & s, const std::string & from, const std::string & to)
{
    string res(s);
    string::size_type n1 = from.size();
    string::size_type n2 = to.size();
    string::size_type i = 0;
    string::size_type j = 0;
    while ((i = res.find(from, j)) != string::npos)
    {
        res.replace(i, n1, to);
        j = i + n2;
    }
    return res;
}
于 2015-12-11T04:52:08.060 に答える
0

多分あなたはこのようなことを試すことができます

string stng;

printf("Enter with number:");
cin >> stng;

replace(stng.begin(), stng.end(), '1', ":x:");

cout << stng << endl;
于 2015-12-11T03:45:30.840 に答える