2013-12-09 2 views
-4

У меня есть эта функция:Как изменить символ на строку?

void map() 
{ 
    map<char, string> change; 
    string usrstr = "A APPLE AND BANANA"; 

    change['A'] = "00011"; 
    change['B'] = "11001"; 
    change['C'] = "01110"; 
    change[' '] = "$$"; 

} 

Как бы я идти об изменении всех вхождений «A» в моей строке на «00011» и то же самое для B, C и пространства. Вся помощь ценится

P.S Строка обыкновение всегда быть такой же

+1

Если речь идет о C++, он должен быть помечен '' C++ исключительно. –

+2

Er, используйте метод 'replace()' –

+0

replace() работает только тогда, когда вы хотите заменить char символом, я хочу заменить символ строкой. – user3080755

ответ

0

Вы можете и должны, вероятно, использовать string::replace. Даже с последним комментарием.

Но это могло бы быть то, что вы пытаетесь сделать:

#include <iostream> 
#include <algorithm> 
#include <iomanip> 
#include <map> 
#include <string> 


using namespace std; 


int main() 
{ 
    char temp; 

    map<char, char*> change; 

    string lol = "A APPLE AND BANANA"; 

    change['A'] = "00011"; 
    change['B'] = "11001"; 
    change['C'] = "01110"; 
    change[' '] = "$$"; 


    for (int i = 0; i < lol.length(); i++) 
    { 
     temp = lol[i]; 
     if (change[temp]) 
      cout << change[temp]; 
     else 
      cout << lol[i]; 
    } 

    cout << endl; 

    cin.get(); 
    return 0; 
} 
+0

Это именно то, что я хотел сделать, Большое спасибо – user3080755

+0

@ user3080755 Хорошо. :) –

1

Не уверен, что понять: как насчет:

std::string str = "A APPLE AND BANANA"; 
std::replace(str.begin(), str.end(), "A", "00011"); 
std::replace(str.begin(), str.end(), "B", "11001"); 
... 
+0

'std :: replace' заменяет отдельные элементы. И '' 00011'' даже не действителен C++ ... – leemes

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