WeiHandsome 2023-06-27 12:07 采纳率: 85%
浏览 17
已结题

set容器find查找元素地址

img


//cout<<*(s2.find('h'))<<"的位置是"<<&(*(s2.find('h')))<<endl;不显示
//请教一下,为啥这么写不能看见h的地址,网上说迭代器类似指针
//cout<<s1.find(h);报错

  • 写回答

2条回答 默认 最新

  • 乘凉~ 嵌入式领域优质创作者 2023-06-27 13:29
    关注

    引用ChatGPT的回答:
    这段代码存在一些问题。首先,s2.find('h')返回的是一个迭代器,表示字符 'h' 在字符串 s2 中的位置。对于迭代器类型,当直接输出时不会显示地址,而是输出其指向的值。

    其次,在 C++ 的字符串操作中,find() 函数返回的是一个迭代器,指向找到的字符的位置,而不是该字符的地址。因此,使用 &(*(s2.find('h'))) 来获取字符 'h' 的地址是错误的使用方法。

    如果您想要输出字符 'h' 在字符串 s2 中的位置,可以将代码修改为以下形式:

    auto it = s2.find('h');
    if (it != s2.end()) {
        size_t position = std::distance(s2.begin(), it);
        cout << "字符 'h' 的位置是:" << position << endl;
    } else {
        cout << "未找到字符 'h'。" << endl;
    }
    
    

    这个代码片段中,我们首先使用 s2.find('h') 获取字符 'h' 在字符串 s2 中的迭代器。然后通过 std::distance() 函数计算该迭代器与字符串起始位置之间的距离(位置)。最后,输出找到的位置信息。

    请注意,这里使用了 std::distance() 函数来计算迭代器之间的距离,并且在使用迭代器之前需要进行有效性检查,以防止字符 'h' 不存在于字符串 s2 中。

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

报告相同问题?

问题事件

  • 系统已结题 7月5日
  • 已采纳回答 6月27日
  • 创建了问题 6月27日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?