reversefind

时间:2023-10-06 18:48:00 编辑:大鹏 来源:长期打折网

string类型的字符串,如何去掉末尾的换行符\r,C#中调用C++写的dll 中一个返回string的函数,结果返回是乱码,C语言中定义的__FILE__使用,如何只出现该文件名,而不显示路径...

string类型的字符串,如何去掉末尾的换行符\r
string类型的字符串,如何去掉末尾的换行符\r
提示:

string类型的字符串,如何去掉末尾的换行符\r

#include
using namespace std;
int main()
{
string s = "ancdr"; //为了方便调试观察,改成了r,一样的
//s.assign(s,0,4); //方法1:把字符串s中从0开始的4个字符赋给当前字符串
s.erase(4,1); //方法2:把字符串s中从第4个开始的1个字符删除。
return 0;
}
两种方法都可以。

C#中调用C++写的dll 中一个返回string的函数,结果返回是乱码
提示:

C#中调用C++写的dll 中一个返回string的函数,结果返回是乱码

以前遇到过这样的情况,是C++的编码和C#的编码不一致导致的,两个得用同一种编码规则才可以。

c++的默认编码好像是Ansy,C#的是unicode。

CString strRecieveStr;
for(i=0;i<m_RecieveFrameHead.i16BufLenth;i++)
{
m_RecieveFrameHead.bDataBuf[i]=pFrameHeadStr->bDataBuf[i];
}
m_RecieveFrameHead.bDataBuf[i]=0;

strRecieveStr.Format("%s",m_RecieveFrameHead.bDataBuf);
你把返回的数据先转成CString的。应该就可以了。
上面的代码是我以前一个项目中的,很长时间了,m_RecieveFrameHead就是C#传来的数据,要转成CString的就可以了。

C语言中定义的__FILE__使用,如何只出现该文件名,而不显示路径
提示:

C语言中定义的__FILE__使用,如何只出现该文件名,而不显示路径

可以用宏定义来实现去除文件名中的路径名。 因为windows和linux下,文件名中的路径分隔符号不同,windows中是"/",而linux中是"/",所以,采用的宏不同: #include //strrchr()函数所需头文件windows:#define filename(x) strrchr(x,'\\')?strrchr(x,'\\')+1:xlinux:#define filename(x) strrchr(x,'/')?strrchr(x,'/')+1:x调用:printf("filename:%s\n", filename(__FILE__) );相关函数说明: 函数原型:char *strrchr(const char *s, int c); 函数功能:The strrchr() function returns a pointer to the last occurrence of the character 【c】 in the string 【s】.函数返回一个指向最后一次出现在字符串s中的字符c的位置指针,如果c不在s中,返回NULL。 PS:linux中提供了相应的函数:basename(s),用来获取不带路径的文件名。

上一篇:inline
下一篇:没有了
相关文章
最新资讯
热门资讯