1.11M Members

C++ to C

 
0
 

I have some code in C++ that uses an std::vector of std::strings to store an array of strings. I need to convert it into C. I thought that I would just create c versions of the functions I need (vector.back,vector.push_back,string.operator+=) but am getting lost in the double pointers. Can anybody lead me on the right track here?

 
0
 

std::vector and std::string do a lot of work internally. You'd probably be better off converting the 'what' instead of the 'how'. Ask yourself what the code is trying to accomplish and write C code to do it.

 
0
 

I was thinking of rather than storing a char** to store a single char* string with some delimiting character. I really need a dynamic array of strings so I do not see any other choice.

 
0
 

You're focusing too much on the 'how'. Explain what the program does and someone can help make suggestions.

 
0
 

Consider why you must convert to C. I cont see many reasons where C would be necessary over C++.

 
1
 

It's not all that difficult to do. Here's an example of push_back

const int BlockSize = 10; // allocate this number of elements at one time
int MaxArraySize = 0; // initial size of the array
int CurrentSize = 0; // current number of elements used in the array

char** array = 0; 

void ReallocArray()
{
   MaxArraySize += BlockSize;
   array = realloc(array,MaxArraySize);
}

char* push_back(const char* item)
{
    if( (CurrentSize+1) >= MaxArraySize )
    {
       ReallocArray();
    }
    array[CurrentSize] = malloc(strlen(item)+1);
    strcpy(array[CurrentSie], item);
    ++CurrentSize;
}
Isn't it about time forums rewarded their contributors?

Earn rewards points for helping others. Gain kudos. Cash out. Get better answers yourself.

It's as simple as contributing editorial or replying to discussions labeled or OP Kudos

You
This article has been dead for over six months: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: