截取字符串问题 有一个字符串,如:"我是中国人mynameis",我要截取该字符串的前8个字符,正确的结果应该是:"我是中国人myn",但VC中汉字是两个字节,结果造成只取得"我是中国"这几个字符,我要实现这种呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 或者根据ascii码判断,如果是大于127的就是2个字节一个字符 用unicode可以截取,怎样使用呢?能说详细点嘛 定义一个wchar的缓冲,再用MultibytesToWidechar把你的字符串转换到缓冲中。这个缓冲中的每个字符都占固定的2个字节。无论中文还是英文还是韩文。也可以把整个应用程序做成unicode的,要定义#define UNICODE宏、改入口点。如果程序简单,也可以这样做。 LPTSTR str="我是中国人mynameis"; wchar_t wstr[60];int k=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str, strlen(str), wstr,60); 我是这样转换的,我要如何取得这个缓冲的值呢? LPWSTR str=L"我是中国人mynameis"; 这样是最简单的,哈哈。你上面的代码,wstr中就是转换后的字符。你把它当中普通字符串用就行了。只是注意函数要用w系列的。 int i,j; i=0;j=0; while(s1[i]) { if(j==8)s1[i]=0; unsigned char c=s2[i]; if(c>128) { i+=2;j++;continue; } s1[j]=c;i++;j++; } 不太明白楼上的意思?s1和s2是两个char类型的数组嘛? s2在这里没有用是我写错了。正确的是int i,j; i=0;j=0; while(s1[i]) { if(j==8){s1[i]=0;break;} unsigned char c=s1[i]; if(c>128) { i+=2;j++;continue; } i++;j++; } 输入汉字,然后删除,为什么会留下残影? vc++2008下用哪种方法实现串行通信? 急!急!急! 怎么用枚举目录下面所有文件? 怎样让自制的ACTIVEX获得输入焦点,我的控件能接受普通字符,接收不到方向键,而且输入的时候发出错误提示音 动态内存分配问题 如何设置逻辑断点? 怎样将浮点型转换成字符串型 如:float a=500;转换成字符串型。马上给分!! 我初学xml,那里可以找到关于它的电子图书? C++线程同步顺序问题 VS 2010下安装 OpenCV2.4.9测试程序出错 动态数组存取鼠标位置 有关GlobalFree( )的问题
这个缓冲中的每个字符都占固定的2个字节。无论中文还是英文还是韩文。也可以把整个应用程序做成unicode的,要定义#define UNICODE宏、改入口点。如果程序简单,也可以这样做。
wchar_t wstr[60];
int k=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str, strlen(str), wstr,60);
我是这样转换的,我要如何取得这个缓冲的值呢?
i=0;j=0;
while(s1[i])
{
if(j==8)s1[i]=0;
unsigned char c=s2[i];
if(c>128)
{
i+=2;j++;continue;
}
s1[j]=c;i++;j++;
}
int i,j;
i=0;j=0;
while(s1[i])
{
if(j==8){s1[i]=0;break;}
unsigned char c=s1[i];
if(c>128)
{
i+=2;j++;continue;
}
i++;j++;
}