Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 19:43   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию перевод в string из unsigned char

нужно число (не символ) перевести в стринг.
причем максимально рационально
Код:
//вывод результатов 
        string sReturn = "";
        char buffer[4];
        string sbuffer = "";
        for (int i = 0; i < uu; i++)
                for (int j = 0; j < 4; j++)
                        for (int k = 0; k < 4; k++)
                        {
                                _itoa_s(unsCharArray[i][j][k],buffer,10);
                                sbuffer = buffer;
                                sReturn += sbuffer + " ";
                        }
Можно ли сделать более рационально?

Добавлено через 3 минуты
В принципе можно не в string, а в char* перевести, что, даже, лучше. Однако заранее неизвестен размер строки, а выделять память через new не хочу, так как вывод осуществляется в функции, взвращающей строку, т.е. если я в функции сделаю выделение памяти через new, я не очищу эту память и произойдёт утечка.
Dimarik вне форума Ответить с цитированием
Старый 21.03.2011, 19:46   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

c_str
profi вне форума Ответить с цитированием
Старый 21.03.2011, 19:50   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
int a = 123;

char str[32];
sprintf(str, "%d", a);
Код:
#include <sstream>
int a = 123;
stringstream ss;
ss << a;
string str(ss.str());
cout << str << endl;
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 22.03.2011, 13:23   #4
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

спасибо большущее
Dimarik вне форума Ответить с цитированием
Старый 22.03.2011, 14:00   #5
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

А как мне stringstream перевести в char*?
Я прочитал http://www.cplusplus.com/reference/i.../stringstream/
и насколько я понял, для этого есть только функция istream::getline, причём требует числа символов в объекте stringstream. А нет такой функции типа stringstream::length(), поэтому число символов придётся считать самому? так что ли?
Dimarik вне форума Ответить с цитированием
Старый 22.03.2011, 22:46   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
#include <sstream>
int a = 123;
stringstream ss;
ss << a;
int len = ss.str().length();
char *str = new char[len + 1];
strcpy(str, ss.str().c_str());
printf("%s\n", str);
delete [] str;
вроде не ошибся
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 22.03.2011 в 22:49.
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для типов данных char, short, int, long с квалификаторами signed, unsigned составить программу, которая, listiksasha Фриланс 4 21.02.2011 12:26
Для типов данных char, short, int, long с квалификаторами signed, unsigned составить программу, которая, listiksasha Помощь студентам 2 20.02.2011 12:57
перевод char * в String^ Visual c++ Freeuser051 Visual C++ 2 07.10.2010 13:46
char->string eds Общие вопросы .NET 1 28.11.2007 17:22