char*和CString之间互转有关问题,百度无数未解决,求指点啊

char*和CString之间互转问题,百度无数未解决,求指点啊啊啊
CString object_type;
if("NECELLREL"==object_type){
  ……
}

在unix系统下编译,一直报错:
在 "operator==(const char*, const CString&)" 和 "built-in operator==(char*, char*)" 之间重载不明确.

经过百度后,想把char*转化成CString,用了:
CString.format("%s","NECELLREL") 结果报错:format 不是 CString 的成员
想把CString转化为char*,用了:
CString.GetBuffer(object_type.length()); 结果报错:GetBuffer 不是 CString 的成员

各位请帮帮忙啊,搞不定这个问题没法下班啊,在线等啊,请帮忙看看啊各位

------解决方案--------------------
CString::Format

void Format( LPCTSTR lpszFormat, ... );
void Format( UINT nFormatID, ... );

参数: lpszFormat 一个格式控制字符串。
nFormatID 包含格式控制字符串的字符串资源标识符。

说明:
此成员函数用来将格式化数据写入一个CString中,其方法就像sprintf函数向一个C-风格的字符数组中格式化输出数据一样。这个成员函数在CString中格式化并存储一系列字符和值。根据lpszFormat中指定的格式或nFormatID标识的字符串资源,函数中的每一个可选参数(如果有)都被转换并输出。
如果此字符串对象本身是作为Format的一个参数,则调用将失败。例如象下面的代码:
CString str = "Some Data";
str.Format("%s%d",str, 123); //注意:在参数列表中也使用了str将导致不可预期的结果。

当你传递一个字符串作为一个可选择的参数时,你必须显式地将它转换为LPCTSTR。这个格式与printf函数中的格式参数具有相同的形式和函数。(有关格式和参数的描述,参见“Microsofr Visual C++ 6.0运行库参考”中的printf。)在被写的字符串结尾将添加一个空字符。
更多的信息,参见“Microsofr Visual C++ 6.0运行时库参考”中的sprintf。

------解决方案--------------------
CString 是MFC/ATL的类, 不能在unix/linux上用
------解决方案--------------------
C/C++ code
std::string object_type;
if(object_type == "NECELLREL"){ 
 //....
}

------解决方案--------------------
标准库的string类里有详细实现。参看〈C++程序设计语言〉
------解决方案--------------------
char* CStringToCharArray(CString str)
{
char *ptr;
#ifdef _UNICODE
LONG len;
len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
ptr = new char [len+1];
memset(ptr,0,len + 1);
WideCharToMultiByte(CP_ACP, 0, str, -1, ptr, len + 1, NULL, NULL);
#else
ptr = new char [str.GetAllocLength()+1];
sprintf(ptr,_T("%s"),str);
#endif
return ptr;
}
这是我遇到问题后的解决方法。
------解决方案--------------------
已经有答案了,CString是MFC里的一个类型,而MFC只存在于WINDOWS里,UNIX里怎么可能会正确。但我也不知道你的编译器怎么会找得到CString标识符
------解决方案--------------------
用C++的std::string代替CString就可以了,这两个类功能基本一样,只是接口有区别,可以去百度
------解决方案--------------------
探讨
unix系统下,那当然会出错了
使用STL的string吧