字符串啊字符串char*char**string......

本文探讨了C++中处理字符串的挑战,特别是从文件读取并传递给CORBA::ORB_init的问题。通过使用动态内存分配解决了静态数组带来的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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! */);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值