我们再看代码时候经常会碰到#define的这种用法:
#define NAME "\0test-control"
以及在QT中:
# define QLOCATION "\0" __FILE__ ":" QTOSTRING(__LINE__)
等都会碰到这种中间带有“\0”的定义方式。
我也不知道该如何处理,但是看提供了一种进行字符串拷贝的方式:
memcy(NewBuf,NAME,len);
该拷贝函数会把NAME中的字符原封不动的拷贝到NewBuf中。memcpy 是指定长度拷贝的,不关心字符串的\0表示;
用memcy(NewBuf,NAME,len)==>会按len长度来copy,不管Name中是什么!
一个小程序:
#include <iostream>
using namespace std;
#define QLOACTION "1""\0" "abcdefg"":"
int main()
{
char name[100];
memcpy(name,QLOACTION,100);
int i=0;
do
{
if (name[i]=='\0')
{
cout<<"此处为空"<<endl;
i++;
continue;
}
cout<<name[i]<<endl;
i++;
} while (name[i]!=':');
}
再把QLOCATION拷贝到name中时,其中的空格不会被拷贝;