2013-06-03 2 views
0

Я использую следующую функцию для создания динамического 2d массив в C:преобразовать указатель целое число (Int **) в строку в C

int** Make2DintArray(int arraySizeX, int arraySizeY) { // From http://pleasemakeanote.blogspot.com/2008/06/2d-arrays-in-c-using-malloc.html 
    int** theArray; 
    theArray = (int**) malloc(arraySizeX*sizeof(int*)); 
    for (int i = 0; i < arraySizeX; i++) 
     theArray[i] = (int*) malloc(arraySizeY*sizeof(int)); 
    return theArray; 
} 

Я хотел объединить все значения матрицы (2d - массив), чтобы сформировать строку, разделенные #

я использовал

int hi11cipherSize = 20; 
std::ostringstream text2Encrypt;///ERROR SOURCE 
// i used the above function to creat a 2D array and fill it 
// then i used the code below to loop through the record and create the string with delimiter # 

for(int i =0; i<hi11cipherSize;i++){ 
    for(int j =0; j<hi11cipherSize;j++){ 
     printf("%d \t",HillCipherMatrix[i][j]); 
     temp = HillCipherMatrix[i][j]; 
     text2Encrypt<<(char)temp<<"#"; //// First error cannot concatenate int with char ??? 

    } printf("\n"); 
} 

QString tempHLBP = QString::fromStdString(text2Encrypt.str()) ; 

qDebug()<<"Text to encrypt "<<tempHLBP<<"\n"; 
qDebug()<<"Length of string "<<tempHLBP.length(); 

я получаю следующие ошибки ОШИБКА:

22:37:59: Running build steps for project StringManJVN... 
22:37:59: Configuration unchanged, skipping qmake step. 
22:37:59: Starting: "C:\QtSDK\QtCreator\bin\jom.exe" 
main.cpp 
main.cpp(17) : error C2079: 'text2Encrypt' uses undefined class 'std::basic_ostringstream<_Elem,_Traits,_Alloc>' 
     with 
     [ 
      _Elem=char, 
      _Traits=std::char_traits<char>, 
      _Alloc=std::allocator<char> 
     ] 
main.cpp(27) : error C2297: '<<' : illegal, right operand has type 'const char [2]' 
main.cpp(27) : warning C4552: '<<' : operator has no effect; expected operator with side-effect 
main.cpp(32) : error C2228: left of '.str' must have class/struct/union 
     type is 'int' 
jom: C:\QTProject\StringManJVN\Makefile.Debug [debug\main.obj] Error 2 
    cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_SQL_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"..\..\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\QtCore" -I"..\..\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\QtSql" -I"..\..\QtSDK\Desktop\Qt\4.8.1\msvc2010\include" -I"..\..\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\ActiveQt" -I"debug" -I"..\..\QtSDK\Desktop\Qt\4.8.1\msvc2010\mkspecs\win32-msvc2010" -Fodebug\ @C:\Users\SONUT\AppData\Local\Temp\main.obj.3948.0.jom 
    C:\QtSDK\QtCreator\bin\jom.exe -f Makefile.Debug 

jom 1.0.8 - empower your cores 

jom: C:\QTProject\StringManJVN\Makefile [debug] Error 2 
22:38:02: The process "C:\QtSDK\QtCreator\bin\jom.exe" exited with code 2. 
Error while building project StringManJVN (target: Desktop) 
When executing build step 'Make' 

Заранее спасибо ;-))

+1

Вы включили заголовок потока? –

+0

@Floris Я сомневаюсь, что это правильный анализ, поскольку text2encrypt - это ostream, который должен допускать использование любого типа, для которого определены операторы потока. Я мог ошибаться, но –

+0

Он не знает, на чем основан text2Encrypt. Как уже упоминалось в @ AK4749, вы можете отсутствовать. – Mike

ответ

1

Попробуйте поставить это на вершине:

#include <sstream> 

Читают выше вопрос вы говорите, что вы пытаетесь поместить это в строку. Если вы имеете в виду std :: string, делать это легко. Обязательно включать в себя право Струнной библиотеки

#include <string> 

, а затем вы можете сделать что-то вроде:

int x = 4; 
string s = ""; 
s += x + 48; //this will convert the number 4 into the char value for 4. 
      //it works for all ascii numbers 
s += "#"; //puts the # sign in there 

Это более или менее будет получить, что вы хотите. Я не уверен, что это лучший способ, но это легко. Очевидно, что описанные выше шаги ясны для ясности. Вы можете немного конденсировать это.

+0

Кто-нибудь знает способ объединить целое число с разделителем «#» Другая функция, кроме std :: ostringstream << –

+0

См. Мои добавления выше. – Mike

+0

спасибо просто включив #include проблема была решена –

Смежные вопросы