ACE_TAO sequence<string> strList C++ 映射
来源:互联网 发布:淘宝买家信用有什么用 编辑:程序博客网 时间:2024/05/16 13:51
.idl文件部分内容:
typedef string User;
typedef sequence<User> UserList;
=================================
部分C++映射代码:
typedef char * User;
typedef ::CORBA::String_var User_var;
typedef ::CORBA::String_out User_out;
其中String_var 是对Char*封装的一个类:
http://blog.chinaunix.net/uid-12818620-id-2914335.html
大概封装内容如上:
所以如需实现类似以下函数:
int corba_client::get_user_by_num(char *name, int num)
{
char* value[] = {"hello"};
if (num < 0 || num > (int)usrlist->length())
return -1;
//Chat::UserList::value_type
if((Chat::ChatServer_ptr)chatserver != NULL)
{
/获取usrlist中第num-1个用户,这是一个User_var 类型,说明sequence<User> UserList;中的User映射为User_var而不是string对应的char*类型
Chat::User_var item = (*usrlist)[num];/
strncpy_s(name, strlen(name), item.in(), sizeof(item.in()));
}
return 0;
}
则可以参照:
#include <cstring>
#define MAXLINE 100
{
private:
char * strPtr_;
public:
//构造函数
String_var():strPtr_(0){}
String_var(char* p)
String_var(const char* p)
{
this->strPtr_ = corba::string_dup(p);
}
//拷贝构造函数
String_var(const String_var& p)
{
this->strPtr_ = corba::string_dup(p.strPtr_);
}
//析构函数
~String_var()
{
cout << "Destructing" << endl;
corba::string_free(this->strPtr_);
this->strPtr_ = 0;
}
char* _retn(void)
{
char *temp = this->strPtr_;
this->strPtr_ = 0;
return temp;
}
{
return this->strPtr_;
}
char*& inout(void)
{
return this->strPtr_;
}
{
corba::string_free(this->strPtr_);
this->strPtr_ = 0;
return this->strPtr_;
}
//可读可写 ,返回char*的引用
CORBA_INLINE operator char*&(void);
CORBA_INLINE operator const char*(void) const;
String_var& operator=(char *p);
String_var& operator=(const String_var& p);
friend ostream& operator<<(ostream& oo,const String_var& p);
CORBA_INLINE char operator[](unsigned long idx)const
{
return this->strPtr_[idx];
}
CORBA_INLINE char& operator[](unsigned long idx){
return strPtr_[idx];
}
};
{
return this->strPtr_;
}
{
return this->strPtr_;
}
{
if(this->strPtr_ != p)
{
corba::string_free(this->strPtr_);
this->strPtr_ = corba::string_dup(p);
}
return *this;
}
{
corba::string_free(this->strPtr_);
this->strPtr_ = corba::string_dup(p);
return *this;
}
String_var& String_var::operator=(const String_var& p)
{
if(this != &p)
{
corba::string_free(this->strPtr_);
this->strPtr_ = corba::string_dup(p.strPtr_);
}
return *this;
}
{
oo << p.strPtr_ ;
return oo;
}
}
int main()
{
corba::String_var toStr;
toStr = corba::string_dup("Hello World!");
corba::String_var formStr;
formStr = toStr;
cout << formStr << endl;
formStr = corba::string_dup("jkdjflsadjfklsdjflksjdf");
cout << formStr << endl;
return 0;
}
- ACE_TAO sequence<string> strList C++ 映射
- static string AppendString(params string[] strList)
- ACE_TAO 真难
- find_in_set(str,strlist)
- FIND_IN_SET(str,strlist)函数
- Leetcode60 Permutation Sequence (string)
- win32下ACE_TAO的编译
- Bundle:映射(String-Value)
- mybatis 映射 List<String>
- MySQL FIND_IN_SET(str,strlist)函数
- 关于FIND_IN_SET(str,strlist)函数
- sequence DEMO(tuple or string)
- 在Hibernate映射文件里配置Sequence
- JNI学习--Java和C、C++之间的数据类型映射之string
- CodeForces 13C Sequence
- Codeforces 13C Sequence
- codeforces 13C. Sequence
- codeforces 13C. Sequence
- Factorial Power(阶乘最后非零位)
- Nginx隐藏index.php和Pathinfo模式配置例子
- magento block和reference
- 3.抽象工厂模式
- 机器学习中的相似性度量http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html
- ACE_TAO sequence<string> strList C++ 映射
- ubuntu编译skynet
- poj2187Beauty Contest 凸包最大距离
- 4.工厂方法模式
- 5.简单工厂模式
- 用快慢指针判断单链表环,找到环入口 扩展到判断两个链表是否相交
- Ubuntu学习笔记之apt-get命令
- 深入oracle分区索引的详解
- poj1288poj1228Grandpa's Estate poj1113Wall