![]() |
#2
八画小子2022-04-18 10:58
|
只有本站会员才能查看附件,请 登录
在C++/CLR中。
用textBox给 int 变量和 duoble变量赋值。
textBox的Text类型为String^
先用StringToHGlobalAnsi(String^ str) 把String^转化成char[]字符数组。
再通过数组中每一个字符的ASCII值计算出变量的值
用textBox 输出 int 变量和 duoble变量。
先用ASCII值把变量写入char[]字符数组。
再用PtrToStringAnsi((IntPtr) char*) 把字符数组转化成String^
原先方法,代码如下:

#include "stdafx.h"
using namespace System;
//把String^ 转化成char* 字符指针
char *str_char(System::String^ str)
{
char* ch1 = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str);
return ch1;
}
//从String^中获取16位整形变量
short NumStr_Num(System::String^ str)
{
short i=0;
short number = 0;
char *pchar = str_char(str);
while(pchar[i] != 0)
{
number*=10;
number +=(pchar[i++]-'0');
}
return number;
}
//16位整形变量,转化成数据型 String^
System::String^ num_str(short num)
{
short count = 0;
char ch1[20]={0};
short i=1;
while(num/i >= 10)
i*=10;
while(i>=1)
{
ch1[count++]=num/i+'0';
num%=i;
i/=10;
}
String^ str1= System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)ch1);
return str1;
}
现在方法,代码如下:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
int num1 = int::Parse(textBox1->Text);
textBox2->Text = (num1*1.5).ToString();
double num2 = double::Parse(textBox3->Text);
textBox4->Text = (num2/2.5).ToString();
}
"今天" 看 "昨天" 写的程序代码,就像在看笑话。。。
"明天" 看 "今天" 写的程序代码,会不会像在看笑话呢。。。