写了一个程序,要从Edit Control中获取一个字符串,这个字符串只是数字,然后对字符串进行强制转换成int类型,然后对这个int值进行一些运算,完了再通过Edit Control显示出来。
现在遇到的问题是,如何对计算完的int值进行类型转换,使得能在Edit Control显示呢?用的方法是SetDlgItemText,第二个参数的类型是LPTSTR,不知道该怎么将int类型转换成LPTSTR?还有就是对上面的LPTSTR直接进行强制类型转换成int会不会有什么问题?用atoi函数不行……
再问下,就是怎么对LPTSR类型变量初始化?我用下面方法有没有问题?
LPTSTR buf = new TCHAR[5];
整体的思路如下:LPTSTR buf = new TCHAR[5];
int iStatus = GetDlgItemText(IDC_EDIT2, buf, 5);
int iOriginal = (int)buf;然后就不知道该怎么写了……
现在遇到的问题是,如何对计算完的int值进行类型转换,使得能在Edit Control显示呢?用的方法是SetDlgItemText,第二个参数的类型是LPTSTR,不知道该怎么将int类型转换成LPTSTR?还有就是对上面的LPTSTR直接进行强制类型转换成int会不会有什么问题?用atoi函数不行……
再问下,就是怎么对LPTSR类型变量初始化?我用下面方法有没有问题?
LPTSTR buf = new TCHAR[5];
整体的思路如下:LPTSTR buf = new TCHAR[5];
int iStatus = GetDlgItemText(IDC_EDIT2, buf, 5);
int iOriginal = (int)buf;然后就不知道该怎么写了……
这一句是不行的。
看你前面用的是tchar,这一句应该为
int iOriginal = _ttoi(buf);你的意思是把iOriginal处理一下,然后显示到对话框中,那就用sprintf吧。
_stprintf(buf, _TEXT("%d"), iOriginal);
SetDlgItemText(IDC_EDIT2, buf);字符串的初始化的确比较麻烦,我一般采用两种方式处理。
1)
const int nMaxString = 1024;
TCHAR buff[nMaxString];
只要字符串不超过1024的长度就没问题,不然就缓冲区溢出了。
2) 使用stl的string类。
stl中有两个类,一个是一般的string,另一个是宽字节的wstring,但没有像TCHAR一样自动的tstring。
我一般自定义一个tstring,方法如下。
typedef basic_string<TCHAR, char_traits<TCHAR>, allocator<TCHAR> > tstring;
呵呵,这个tstring用起来就很方便了。
那么LPTSTR = char* ,LPCTSTR= const char*
那么char*和int的转换是不是很简单:
char* to int: atoi
int to char*: itoa 或者 sprintf