Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Перевод из int в CString


Автор: Morozzz45 6.6.2010, 16:18
Мне нужно перевести массив [60][60] в строку x типа CString. Массив состоит из 0 и 1. Я беру по 8 элементов, перевожу их в 10ое число, его в чар, и в конце приравниваю к цстринговской переменной. Есть еще воможные, более быстрые варианты перевода?
Мой код:
    
Код

int i,ii=0,temp=0,k=0,o=0,iter=0;
    CString x; char* t; t=new char [3600]; 
    for(i=0;i<3600;i++)
    {
        temp=temp+resh[k][ii]*pow(2,o);
        o++;ii++; 
        if(o==8) 
        {
            o=0;
            t[iter]=temp;
            iter++;
        }
        if(i==59) {k++;ii=0;o=0;}
        
    }
    x=t;
    return x;

Массив resh[60][60] заполнен 1 и 0. В итоге, получается строка длиной 32 символа... А хотя должно быть 450.
Заранее спасибо smile

Автор: Sosed 6.6.2010, 16:57
т.е. у нас 3600 нулей и едениц, которые нужно разбиться на последовательности по 8 символов,  пребразовать в 8-ми битные числа и записать в CString, так?

Автор: Morozzz45 6.6.2010, 17:18
3600 нулей и единиц, разбиваем на блоки по 8, каждый блок в десятичное число, число в символ(как аскикод), символы по порядку в систринг smile

Автор: Sosed 7.6.2010, 05:07
черт, MFC-а то у мня нету, компилятор не VS(

Код

CString numStr;
CString tmp;
int num(0), count(0);
for(int i=0; i<60; ++i) {
    for(int j=0; j<60; ++j) {
        if(count < 8) {
            if( resh[i][j] ) num += (2 << 6-count);
            ++count;
        } else {
            count = 1;
            tmp.format("%i", num);
            numStr = numStr + tmp;
            tmp.clear(); //temp="";
            if( resh[i][j] ) num = (2 << 6);
            else num = 0;
        }
    }
}

Примерно так, но методы CString(format, clear) может пишутся немного по другому.

Автор: Morozzz45 7.6.2010, 19:22
Запустил в отладчике, сначала все идет нормально, Num равен 240.
tmp.format("%i", num); - тут он в тмп присваивает не символ(как нужно), а именно 240...

Автор: Sosed 8.6.2010, 05:11
Что-то подумал что числа надо)
Ну так попробуй
tmp.format("%c", (char)num);
или массив char на 450 штук и туда пихать, а после его в CString

Автор: Albor 8.6.2010, 17:18
Код

CString sResult;
CString sTemp;
sTemp.Format(_T("%u"), mas[i][j]);
sResult+=sTemp;

Оформи только в цикле и всё будет ОК. 

Автор: Morozzz45 10.6.2010, 14:04
Спасибо, с этим разобрался)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)