Всем привет. Помогите с кодом пожалуйста. Мне нужно сделать из int string. Я уже все способы перепробовал, везде пишет, что не найден оператор и т.п. Я новичок, поэтому туплю. Вроде бы stringstream сработал, но при компиляции вылезает ошибка bad alloc, это связано с переполнением памяти. Вот код: pastebin.com/kZC44q5g
Спасибо
@newfag, выложите код хотя бы на pastebin.com или ideone.com. Чтобы дать точный ответ, было бы неплохо ваш код запустить и пройтись по нему отладчиком, но набирать вручную лень. Навскидку наиболее вероятная причина падения - вы длину строки определяете посредством sizeof. Это и с массивом char'ов не работает, не то что с классом string. Для определения дины строки, хранящейся в объекте класса string, используйте метод size(): lng = str.size();.
UPD
Вот ещё пара косяков:
>>, а не запятыми, как у вас: myfileinput>>x,n;.n2, temp. Переменные нужно инициализировать перед использованием. Компилятор имеет право записать в неинициализированные переменные любой мусор.bad alloc у вас возникает из-за того, что вы бесконечно дописываете в ss какие-то строки. stringstream не очищается перед каждой записью, поэтому разростается до бесконечности и забивает собой всю память.Поскольку до -std=c++11 стандартной функции to_string() не было, то видимо более надежно писать код:
#include <stdio.h> // для sprintf
...
char tmpbuf[21]; // максимальный размер long long целого со знаком и завершающим nil
sprintf (buf, "%d", i); // в данном случае i -- int (достаточно было бы буфера размером 12)
string str(tmpbuf);
"Мне нужно сделать из int string." -- str = to_string(i). Чтобы попробовать на своей машине, загрузи код по ссылке и выполни команду: g++ -std=c++11 ideone_XMjben.cpp && ./a.out. Если слова "выполни команду", или сама команда не ясна -- задай отдельный вопрос.
Я вот такой способ придумал.
#include <iostream>
#include <string>
using namespace std;
int main(){
char buf[40];
int i = 123;
itoa(i, buf, 10);
string s;
s += buf;
cout << s << endl;
return 0;
}
Продвижение своими сайтами как стратегия роста и независимости