zamiana int na string

0

Witam,
Chciałbym zamienić int na string, ale nie w taki sposób aby zamienić wartość int'a na string. Tylko wiedząc, że int nie przekroczy wartości 255, zamienić to na string o rozmiarze 1. Nie wiem jak to do końca wytłumaczyć o co mi chodzi, może jak dam kod to będzie łatwiej.

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main (){
    char c; 
    string temp;
    for (int i = 0; i < 255; i++){
        c = i;  
        stringstream ss;
        ss<<c;
        ss>>temp;
        cout <<i <<": "<< (int)temp[0] << " " << temp << endl;
    }

  return 0;
}

problem jest tego typu, że dla intów od 9 do 13 dzieją się dziwne rzeczy, nie bardzo wiem dlaczego i jak zrobić to inaczej. Potrzebne mi to do metody replace dla stringa, która jako jeden z argumentów przyjmuje stringa którym chcemy podmienić. Chciałbym tam władować liczbę (nie liczbę jako stringa), ale nie wiem w jaki sposób. Proszę o pomoc.

0

Ale ty tu robisz zupełnie co innego. Ty tutaj nie zamieniasz liczb na stringi, tylko ZNAKI o kodach ASCII określonych przez liczby zamieniasz na stringi.
http://www.asciitable.com/index/asciifull.gif
Co bardzo w ogóle mnie dziwi, bo gdyby nie ten idiotyczny zabieg z wpisaniem liczby do char to stringstream by sobie spokojnie poradził i zadziałał poprawnie.
I nie bardzo rozumiem co chciałeś zrobić tutaj

(int)temp[0]

bo to wypisze ci numer znaku ASCII dla znaku temp[0]...

0

to może zaczne od początku co mam zrobić. W stringu mam wyszukać słów kluczowych pod algorytm morisa-pratta czy jakoś tak, nie pamiętam dokładnie. Algorytm ten działa najlepiej, albo i tylko na cyfrach symbolizujących słowa kluczowe. Tak wiec wyszukuje w stringu wyrazów kluczowych i przypisuje im odpowiednie indeksy. Wiem, że słów kluczowych może być max 255. To ma działać mniej więcej tak jak to:

void generator(string &linia, vector <string> &slowa, vector<char> &indeksy){//linia w ktorej szukam, vector slow kluczowych, vector w którym zapisze indexy 
    string buf
    buf.clear();
    for (int i = 0; i < linia.length(); i++){
        buf += linia[i];
        for (int j = 0; j < slowa.size(); j++){
            if(buf.compare(slowa[j]) == 0){
                indeksy.push_back(j);
                buf.clear();
                break;
            }
        }        
    }
}

ewentualnie tak jak to, tytlko tutaj też jest gdzieś błąd, którego znaleźć nie mogę

void generator(string &linia, vector <string> &slowa, vector<char> &indeksy){
    indeksy.resize(linia.length());

    for (int i = 0; i < slowa.size(); i++){
        int t = linia.find(slowa[i]);
        while(t != -1){
            indeksy[t] = i+1;
            t = linia.find(slowa[i], t+slowa[i].length());
        }
    }
    for (int i = 1; i < indeksy.size(); i++)
        if(indeksy[i] == 0) indeksy.erase(indeksy.begin()+i--);
}

tylko, że tutaj nie chce używać vectora z indeksami

void generator(string &linia, vector <string> &slowa){
    for (int i = 0; i < slowa.size(); i++){
        char c = i;
        string temp;
        stringstream ss;
        ss<<c;
        ss>>temp;

        int t = linia.find(slowa[i]);
        while(t != -1){
            linia.replace(t, slowa[i].size(), temp);
            t = linia.find(slowa[i]);
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0