ну, я хотел бы знать, как изменить номер на букву, я хотел бы заменить номер 1
с :x:
Вот мой код:
string stng;
printf("Enter with number:");
cin >> stng;
replace(stng.begin(), stng.end(), '1', 'x');
cout << stng << endl;
как вы видите, я использую это для замены: replace(stng.begin(), stng.end(), '1', 'x');
но как только я могу только изменить 1
за x
Хочу заменить на :x:
Может быть, вы можете попробовать что-то вроде этого
string stng;
printf("Enter with number:");
cin >> stng;
replace(stng.begin(), stng.end(), '1', ":x:");
cout << stng << endl;
Вот что я использую. Это займет std::string
и заменить все вхождения from
входная строка в to
строка ввода.
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;
}
Вы можете разделить строку по разделителю '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);
}
Жить это Вот
Вы можете сделать это лучше с 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'
}
И ваша работа выполнена !!!