2015-12-11 3 views
0

хорошо я хотел бы знать, как изменить число в письме, я хотел бы заменить номер 1 с :x: Вот мой код:C++ Как заменить номер для письма

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:

+0

http://stackoverflow.com/questions/4643512/... http://stackoverflow.com/questions/ 3418231/... Кажется, для C++ это не так уж и сложно :( – Dzenly

+0

Возможный дубликат [Как заменить все вхождения символа в строке?] (Http://stackoverflow.com/questions/2896600/how-to- replace-all -хождения-of-a-character-in-string) – prazuber

ответ

0

может быть, вы можете попробовать что-то вроде этого

string stng; 

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

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

cout << stng << endl; 
+0

, но его невозможно дать мне erro, если я использую «x» без ошибок!: c – Ph4nton

0

Вот что я использую. Он примет значение 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; 
} 
+0

Ничего себе, это потрясающе, очень спасибо: D его работа прекрасна! – Ph4nton

+0

Я думаю, что есть ошибка, если строка 'from' пуста. –

+0

нет, это правильно, вы звоните изнутри: D – Ph4nton

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' 
} 

И ваша работа выполнена !!!

+1

Хм, это хорошо, работает очень хорошо! Я никогда не видел, чтобы «авто» в C++ будет больше изучать его! thx: D – Ph4nton

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); 
} 

Живой here

 Смежные вопросы

  • Нет связанных вопросов^_^