VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 156|回复: 4

指针遍历字符串

[复制链接]
76_avatar_middle
最佳答案
0 
online_vip 发表于 2020-4-8 12:58:29 | 显示全部楼层 |阅读模式
#include <iostream>
#include <string>
using namespace std;

bool Str_Exch(string* str,int str_len,bool b_odd_pos=true)
{

        cout<<*str<<'|'<<str_len<<'|'<<b_odd_pos<<endl;


        for (int i = 0;i<str_len;++i)
        {
                cout<<*str<<endl;
                str++;
        }

        return 0;
}

int main()
{
        string x = "abcdefghijklmnopq";
        Str_Exch(&x,x.size(),true);

        system("pause");

}
指针遍历字符串




上一篇:小白求答
下一篇:未定义基类的问题很迷糊
51_avatar_middle
最佳答案
79 
online_admins 发表于 2020-4-8 13:16:38 | 显示全部楼层
如果非要用 string 类型的话,那就得改成这样才行:

  1. bool Str_Exch(string* str, int str_len, bool b_odd_pos = true)
  2. {
  3.         cout << *str << '|' << str_len << '|' << b_odd_pos << endl;
  4.         for (int i = 0; i < str_len; ++i)
  5.         {
  6.                 int idx = i + 1;
  7.                 char& ch = (*str)[i];
  8.                 if ((b_odd_pos && idx % 2 != 0) || (!b_odd_pos && idx % 2 == 0))
  9.                 {
  10.                         if (ch >= 'a' && ch <= 'z')
  11.                         {
  12.                                 ch -= 32; //小写字母和大写字母的ASCII码差了32
  13.                         }
  14.                 }
  15.         }

  16.         return 0;
  17. }

  18. int main()
  19. {
  20.         string x = "abcdefghijklmnopq";
  21.         Str_Exch(&x, x.size(), true);

  22.         system("pause");
  23.         return 0;
  24. }
复制代码
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-8 13:28:42 | 显示全部楼层
老大说的没错
不过我也改了一下
也可以运行
你是把指针的地址++
那就没有意思了
你加他干嘛呀,是不是?
你的i已经加一了,你再加地址的那个一有什么用?
稍微改动一下
把str++删掉
直接输出它
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. bool Str_Exch(string* str, int str_len, bool b_odd_pos = true)
  5. {

  6.         cout << *str << '|' << str_len << '|' << b_odd_pos << endl;

  7.         for (int i = 0; i < str_len; ++i)
  8.         {
  9.                 cout << str->at(i) << endl;
  10.         }
  11.         return true;
  12. }

  13. int main()
  14. {
  15.         string x = "abcdefghijklmnopq";
  16.         Str_Exch(&x, x.size(), true);
  17.         system("pause");
  18.         return 0;
  19. }
复制代码
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-8 13:31:18 | 显示全部楼层
Syc 发表于 2020-4-8 13:16
如果非要用 string 类型的话,那就得改成这样才行:

我也不是说老大的代码有问题
但是老大忘记输出了,导致只把前面的一行输出了
把这个函数主要的含义抛弃掉,那调用这个函数有什么意义?
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-8 13:32:57 | 显示全部楼层
冰淇淋 发表于 2020-4-8 13:31
我也不是说老大的代码有问题
但是老大忘记输出了,导致只把前面的一行输出了
把这个函数主要的含义抛弃 ...

我以为他输出的应该是
捕获.PNG
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

关闭

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

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

GMT+8, 2020-8-12 11:29

Powered by CcTry.CoM

© 2009-2020 cctry.com

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