ReleaseBuffer只有一个作用,就是更新字符串的长度

原创 2012年03月29日 09:59:33
void CStringBufferDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here


CString WeatherZone = "";
int strLen = this->m_WeatherZone.GetLength();
memcpy(WeatherZone.GetBuffer(strLen),this->m_WeatherZone.GetBuffer(strLen),strLen);
WeatherZone.ReleaseBuffer();

CString  WeatherInfo = "";
strLen = this->m_szWeatherInfo.GetLength();
memcpy(WeatherInfo.GetBuffer(strLen),this->m_szWeatherInfo.GetBuffer(strLen),strLen);
WeatherInfo.ReleaseBuffer();

CString  Weatherglass= "";
strLen = this->m_szWeatherglass.GetLength();
memcpy(Weatherglass.GetBuffer(strLen),this->m_szWeatherglass.GetBuffer(strLen),strLen);
Weatherglass.ReleaseBuffer();

 CString weather = WeatherZone +" " +WeatherInfo +" "+Weatherglass;	

 SetDlgItemText(IDC_STATIC1,weather);
 // 为啥得带的这个weather 是"  "呢?而不是 "北京多云转晴 23~35度"呢?
 /*
 很明显ReleaseBuffer只有一个作用,就是更新字符串的长度。
 CString内,GetLength获取字符串长度并不是动态计算的,
 而是在赋值操作后计算并保存在一个int变量内的,
 当通过GetBuffer直接修改CString时,那个int变量并不可能自动更新,
 于是便有了ReleaseBuffer。	 
    其实,计算长度还能用strlen(),这个就算不ReleaseBuffer也不会出错,
	但如果不ReleaseBuffer,在+=这种赋值时字符串很可能会跟想要得到的不同。 
 */
}

void CStringBufferDlg::OnButton2() 
{
	// TODO: Add your control notification handler code here
	CString s="hello";	
    LPTSTR ps=s.GetBuffer(10);
	MessageBox(ps);
    strcpy(ps,"hi");
	MessageBox(ps);	
	MessageBox(s);	
	int len=s.GetLength();
	char buff[256];
	MessageBox(itoa(len,buff,10));
    s.ReleaseBuffer();	
	len=s.GetLength();
	MessageBox(itoa(len,buff,10));
}

void CStringBufferDlg::OnButton3() 
{
	// TODO: Add your control notification handler code here
	CString WeatherZone = "";
	int strLen = this->m_WeatherZone.GetLength();
	memcpy(WeatherZone.GetBuffer(strLen),this->m_WeatherZone.GetBuffer(strLen),strLen);
	//WeatherZone.ReleaseBuffer();
	
	CString  WeatherInfo = "";
	strLen = this->m_szWeatherInfo.GetLength();
	memcpy(WeatherInfo.GetBuffer(strLen),this->m_szWeatherInfo.GetBuffer(strLen),strLen);
	//WeatherInfo.ReleaseBuffer();
	
	CString  Weatherglass= "";
	strLen = this->m_szWeatherglass.GetLength();
	memcpy(Weatherglass.GetBuffer(strLen),this->m_szWeatherglass.GetBuffer(strLen),strLen);
	//Weatherglass.ReleaseBuffer();
	
	char buff[256];
	wsprintf(buff,"%s %s %s",WeatherZone.GetBuffer(0),WeatherInfo.GetBuffer(0),Weatherglass.GetBuffer(0));
	//CString weather = WeatherZone +" " +WeatherInfo +" "+Weatherglass;	
	
 SetDlgItemText(IDC_STATIC1,buff);	
}

创建一个长度为n的随机字符串字符串(C Python Java三版实现)

在面试的时候遇到这个一道题
  • z791706848
  • z791706848
  • 2014年09月18日 00:01
  • 625

字符串类习题、面试题详解(第一篇)

1题:WERTYU(竞赛基础题) 把手放在键盘上时,稍不注意就会往右错一位,这样的话Q会变为W,J会变为K等。输入一个错位后敲出的字符串,输出打字员本来想打出的句子。 样例输入:O S, GOMR...
  • csdnstudent
  • csdnstudent
  • 2014年10月20日 15:37
  • 2981

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置

剑指offer:在一个字符串(1 思路:用空间换时间。1)建立一个长为256的数组,其实全部由字母组成也可以建立一个长度26*2=52的数组,但是稍微麻烦,这里不使用。 将所有元素全部初始化为0;...
  • u013686654
  • u013686654
  • 2017年07月26日 11:09
  • 220

求已知字符串的最大回文字符串长度,并输出该字符串

求已知字符串的最大回文字符串长度,并输出该字符串(不考虑数字) 输入示例:      Madam,I'm Adam. 输出示例:      Madam,I'm Adam. 题目分析: 输入分析:C...
  • qq_26010491
  • qq_26010491
  • 2015年10月24日 15:56
  • 967

根据给定的字符生成指定长度的字符串

转:http://blog.csdn.net/xiazdong/article/details/7709249
  • kpchen_0508
  • kpchen_0508
  • 2014年11月12日 10:56
  • 2111

、给一组字符串,需要你输出最小长度的字符串与最大长度的字符串,如果有相同最小(大)长度的,就按照给的顺序挨个输出。

【问题描述】给一组字符串,需要你输出最小长度的字符串与最大长度的字符串,如果有相同最小(大)长度的,就按照给的顺序挨个输出。【例如】 【输入】qwert asdfg sdf erd jkjkljsld...
  • u011177305
  • u011177305
  • 2016年03月06日 19:27
  • 693

题目1159: 单词替换

题目描述 输入一个字符串,以回车结束(字符串长度   输入 多组数据。每组数据输入包括3行, 第1行是包含多个单词的字符串 s, 第2行是待...
  • SJF0115
  • SJF0115
  • 2013年04月05日 22:44
  • 2110

【c语言】编写一个函数计算字符串长度

方法一:数组方式 代码如下: #include #include int my_strlen(char const *str) { int count=0; assert(str); //断言,...
  • i_fcy
  • i_fcy
  • 2015年05月21日 18:44
  • 2844

C语言基础-生成任意长度的字符串

C语言,随机数,字符串
  • baidu_35692628
  • baidu_35692628
  • 2017年06月02日 21:27
  • 358

最后一个单词的长度(LintCode)

题目来源:LintCode 原题地址:http://www.lintcode.com/zh-cn/problem/length-of-last-word/# 题目: 给定一个...
  • lyy_hit
  • lyy_hit
  • 2015年10月26日 17:03
  • 727
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ReleaseBuffer只有一个作用,就是更新字符串的长度
举报原因:
原因补充:

(最多只允许输入30个字)