VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 267|回复: 10

[已解决]求助,如何把double变量转化成String ^ 字符串。。

[复制链接]
38_avatar_middle
最佳答案
0 
在线会员 发表于 2021-12-5 05:28:33 | 显示全部楼层 |阅读模式
本帖最后由 zmrghy 于 2021-12-6 00:15 编辑

求助,
在  VS2010   C++/ CLR 中      如何把double变量转化成String ^ 字符串。。
只有先转化成 char数组,再转成String ^字符串。
想直接转成String ^字符串。几种都没成功。。。
可以转化成,CString。函数返回CString。。。就会出 不能将参数 1 从“CString”转换为“System::String ^”

如果再添加 gcnew System::String(); 转化  就会出现如下图错误提示。。。。。

textBox4->Text = gcnew System::String(dtos(num));

求助,如何把double变量转化成String ^ 字符串。。

求助,如何把double变量转化成String ^ 字符串。。
求助,如何把double变量转化成String ^ 字符串。。
最佳答案
31_avatar_small
2021-12-5 18:40:40
没安装C++/CLI,代码没测试,不过应该没问题。
  1. const double PI = 3.14159;
  2.        
  3.         char chRet[10]{ 0 };
  4.         sprintf_s(chRet, "%.5lf", PI);

  5.         System::String ^ str = Marshal::PtrToStringAnsi((IntPtr)(char*)chRet);
复制代码


放弃吧,用真正的C++,或者用C#都比用C++/CLI强。




上一篇:windows 第一个程序 无法运行
下一篇:警告 C28251 “wWinMain”的批注不一致:
00_avatar_middle
最佳答案
12 
在线会员 发表于 2021-12-5 07:52:20 | 显示全部楼层
东拼西凑也能做到
string dtos(double d)
{
         CString Cstr=Cstr.Format(_T("%.3lf"), d);;
         std::string  str=Cstr.GetBuffer();  
         return str;
}

https://www.cnblogs.com/HappyEDay/p/7016162.html

点评

方法太多不举例了str = LPCSTR(cstr); //CString->string  发表于 2021-12-5 09:30
17_avatar_middle
最佳答案
10 
在线会员 发表于 2021-12-5 14:58:28 | 显示全部楼层
本帖最后由 yoobaby 于 2021-12-5 15:00 编辑


  1. #include <sstream>
  2. #include <iomanip>

  3. std::string DoubleToString(double value) {
  4.         std::stringstream ss;
  5.         ss.setf(ios::fixed);
  6.         //小数位数5
  7.         ss << std::setprecision(5) << value;
  8.         return ss.str();
  9. }

  10. void test(){
  11.          double d = 3.14;
  12.          string str = std::to_string(d);//只能是6位小数位!
  13.          cout << DoubleToString(d) << endl;
  14. }
复制代码
31_avatar_middle
最佳答案
60 
在线会员 发表于 2021-12-5 18:40:40 | 显示全部楼层    本楼为最佳答案   
bestAnswer
没安装C++/CLI,代码没测试,不过应该没问题。
  1. const double PI = 3.14159;
  2.        
  3.         char chRet[10]{ 0 };
  4.         sprintf_s(chRet, "%.5lf", PI);

  5.         System::String ^ str = Marshal::PtrToStringAnsi((IntPtr)(char*)chRet);
复制代码


放弃吧,用真正的C++,或者用C#都比用C++/CLI强。
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-12-5 20:17:33 | 显示全部楼层
cpp2019 发表于 2021-12-5 18:40
没安装C++/CLI,代码没测试,不过应该没问题。

原本,学习编程是为了打发无聊时间。并不是非要用CLR。。。C++MFC好用的多。。。
我只发现一点C++ CLR窗口界面设计修改比C++MFC简单多了。。。
相当于表面文章做的好。。。。
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-12-5 20:40:37 | 显示全部楼层

不对呀,也是不行

  1. private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
  2.                  {
  3.                          double num=0.0;
  4.                          char ch1[20]={0};

  5.                          num = textStr_number(textBox1->Text);
  6.                          number_char(num, ch1);
  7.                          textBox2->Text =  char_str(ch1);
  8.                           num*=3;
  9.                          //textBox4->Text = gcnew System::String(dtos(num));
  10.                          textBox4->Text = DoubleToString(num);
  11.                          number_char( num,ch1);
  12.                          textBox3->Text =  char_str(ch1);                       
  13.                  }
复制代码



1>d:\c++\text_char_number\text_char_number\Form1.h(154): error C2664: “void System::Windows::Forms::Control::Text::set(System::String ^)”: 不能将参数 1 从“std::string”转换为“System::String ^”
17_avatar_middle
最佳答案
10 
在线会员 发表于 2021-12-5 21:27:09 | 显示全部楼层
zmrghy 发表于 2021-12-5 20:40
不对呀,也是不行

不好意思,没看仔细你要的是 C++/CLI;当成c++给答了
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-12-6 00:10:28 | 显示全部楼层
cpp2019 发表于 2021-12-5 18:40
没安装C++/CLI,代码没测试,不过应该没问题。

太感谢了,又成功了
  1. #include <string>
  2. using namespace System;
  3. using namespace System::Runtime::InteropServices;
  4. String^ double_str(double num)
  5. {
  6.          char chRet[20]={0};
  7.         sprintf_s(chRet, "%.8lf", num);
  8.         String^ str = Marshal::PtrToStringAnsi((IntPtr)(char*)chRet);

  9.                 return str;
  10. }
复制代码


C语言入门水平。。。C++真的是一窍不通。。。
C语言  变量在函数开头必需定义好。。。
C++中,变量在使用时,可以现定义。。。。别人这样写虽然能看,但自己写函数时,还是照着C语言规定去写。
你看一下,楼下我发的截图,我自己写的double 转char的函数 费了吃奶的劲了!!!
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-12-6 00:23:15 | 显示全部楼层
yoobaby 发表于 2021-12-5 21:27
不好意思,没看仔细你要的是 C++/CLI;当成c++给答了

没关系,也要感谢你的回答。。。。
31_avatar_middle
最佳答案
60 
在线会员 发表于 2021-12-6 10:41:17 | 显示全部楼层
zmrghy 发表于 2021-12-5 20:17
原本,学习编程是为了打发无聊时间。并不是非要用CLR。。。C++MFC好用的多。。。
我只发现一点C++ CLR窗 ...


C++/CLI用的人少,资料也不多,有问题都没地方讨论,C++/C#至少有地方给你讨论。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-1-21 10:39

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表