C++编程里最让人头疼的问题,字符串处理怎么得也的算一个了吧?昨儿个因为那个IM是直接通过console执行的,为了把其封装到dll里,就得从文件里读启动orb的命令,于是就写代码从文件里读,但是每次运行都失败!调试的时候发现问题出现在命令行转化上,可是我给的指针是对的啊,把ace里源码转化命令行的拿来仔细的看啊看,才发现貌似应该给个动态申请的指针。。。而我给的是char a[X][Y]的 char** a,于是就写了以下代码,居然通过了。。。。可是为什么呢?我觉得可能是静态申请的指针其内存申请在栈上,而ace的命令行转换需要对char**指针指向的内存进行添加删除所以就失败了吧,maybe......
int index = 0;
const int MAX_COMMEND_LENGTH = 256;
const int MAX_COMMEND_NUM = 10;
//const char array could not be used here to serve as the arguement in the
//process of the orb instance,it seems that only menory that allocate on the
//heap could be used!
char** v ;
v = new char*[MAX_COMMEND_NUM];
ifstream file("orb_init_list.txt");
while (!file.eof() && file.peek() != EOF) {
v[index] = new char[MAX_COMMEND_LENGTH];
file.getline (v[index], MAX_COMMEND_LENGTH);
v[index][strlen(v[index])] = '/0';
index ++;
}
try {
CORBA::ORB_var orb =
CORBA::ORB_init (index, v,
"" /* the ORB name, it can be anything! */);