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

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日