丨远 2022-08-10 22:49 采纳率: 100%
浏览 86
已结题

VS2022使用atof函数时,写入访问权限冲突

我在用VSC++2022测试atof()函数
相关代码:
#include<iostream>
#include<string>
using namespace std;


int main()
{
    
    char* num= (char*)"4.56";
    cout << "请输入:" << endl;
    cin >>num;
    cout << "输出后:" << atof(num) << endl;
    system("pause");
    return 0;

}

img

请求帮忙解答一下!十分感激!

  • 写回答

3条回答 默认 最新

  • [PE]经典八炮 2022-08-11 07:11
    关注

    首先,你的第9行就体现了一个非常不好的习惯:强制去const属性。"4.56"本来是一个const char *,你直接赋值给char*肯定出错,所以你用了个强制类型转换,而强制类型转换也是很不好的习惯。然后你的代码为什么不对呢,是因为"4.56"是在常量区的一个字符串,无法修改,而你又有一个cin>>num,这相当于修改常量区的内容了,肯定报错。还有,我用的C++20标准,现在都把operator>>(char*)这个去掉了,就是为了防备不安全的情况。
    你明显是指针学得不扎实,好好复习下吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 8月10日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装