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