There shouldn't be anything wrong with returning a 2-dim array.
Something like the following should work.
#include <iostream>
#include <string>
std::string **getstring(int x, int y){
std::string **var = new std::string*[x];
for (int i=0;i<x;i++)
var[i]=new std::string[y];
return var;
}
int main(){
std::string **tmp = getstring(5,10);
return 0;
}
This assumes the same number of elements at each line, and you should cleanup the memory.
good luck