鱼C论坛

 找回密码
 立即注册
查看: 1194|回复: 5

[已解决]关于字符串中所含整数输出的问题

[复制链接]
发表于 2019-11-26 17:52:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<iostream>
  2. #include<string.h>
  3. #define MAX 1024
  4. using namespace std;

  5. int cal_num(char* str)
  6. {
  7.         char *pstr;
  8.         int count;
  9.         int number=0;
  10.         pstr=str;
  11.         while(*pstr!=0)
  12.         {
  13.                 if(*pstr>='0'&&*pstr<='9')
  14.                 {
  15.                         count++;
  16.                         number=number*10+*pstr;//该句错误,如何修改,指针存储的数字应该如何加呢。
  17.                 }
  18.                 else
  19.                 {
  20.                         cout<<number;//该句错误
  21.                 }
  22.                 pstr++;
  23.         }
  24.         cout<<"数字的个数是:"<<count;
  25. }
  26. int main()
  27. {
  28.         char str[MAX];
  29.         cout<<"请输入一串字符:";
  30.         cin>>str;
  31.         cal_num(str);
  32. }
复制代码

我想要在输出字符串数字个数的同时,输出字符串中的整数,例如:输入dasd566dsa13,输出:566,13,5,上述程序标注语句应该怎么修改啊,而且一个如何忽略数字间的其他字符呢,谢谢了。
最佳答案
2019-11-26 19:53:44
  1. #include <iostream>
  2. #include <string>
  3. #include <cctype>
  4. void calcstr(std::string &str)
  5. {
  6.     int count = 0;
  7.     for (char &i : str)
  8.     {
  9.         if (isdigit(i))
  10.         {
  11.             count++;
  12.         }
  13.         if (!isdigit(i))
  14.         {
  15.             i = 0;
  16.         }
  17.     }
  18.     std::cout << "字符串中数字的个数是:" << count << "\n"
  19.               << "字符串中的数字有:" << str << std::endl;
  20. }
  21. int main(int argc, char const *argv[])
  22. {
  23.     std::string a = "gfgf122gf5f9g7+f+g854";
  24.     calcstr(a);
  25.     return 0;
  26. }
复制代码

-----------------------------------------------
E:\Users\admin\Documents\VScode\Code>cmd /C "c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-e0rmbvrj.mo0 --stdout=Microsoft-MIEngine-Out-fdgtarns.xp5 --stderr=Microsoft-MIEngine-Error-xca4qu35.qbs --pid=Microsoft-MIEngine-Pid-30jqmv5x.4bs --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi "
源字符串:gfgf122gf5f9g7+f+g854
字符串中数字的个数是:9
字符串中的数字有:    122  5 9 7    854


E:\Users\admin\Documents\VScode\Code>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-26 19:53:44 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <string>
  3. #include <cctype>
  4. void calcstr(std::string &str)
  5. {
  6.     int count = 0;
  7.     for (char &i : str)
  8.     {
  9.         if (isdigit(i))
  10.         {
  11.             count++;
  12.         }
  13.         if (!isdigit(i))
  14.         {
  15.             i = 0;
  16.         }
  17.     }
  18.     std::cout << "字符串中数字的个数是:" << count << "\n"
  19.               << "字符串中的数字有:" << str << std::endl;
  20. }
  21. int main(int argc, char const *argv[])
  22. {
  23.     std::string a = "gfgf122gf5f9g7+f+g854";
  24.     calcstr(a);
  25.     return 0;
  26. }
复制代码

-----------------------------------------------
E:\Users\admin\Documents\VScode\Code>cmd /C "c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-e0rmbvrj.mo0 --stdout=Microsoft-MIEngine-Out-fdgtarns.xp5 --stderr=Microsoft-MIEngine-Error-xca4qu35.qbs --pid=Microsoft-MIEngine-Pid-30jqmv5x.4bs --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi "
源字符串:gfgf122gf5f9g7+f+g854
字符串中数字的个数是:9
字符串中的数字有:    122  5 9 7    854


E:\Users\admin\Documents\VScode\Code>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-27 12:18:09 | 显示全部楼层
bin554385863 发表于 2019-11-26 19:53
-----------------------------------------------
E:%users\admin\Documents\VScode\Code>cmd /C "c:%u ...

我对照着看一下,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-27 15:03:50 | 显示全部楼层
bin554385863 发表于 2019-11-26 19:53
-----------------------------------------------
E:%users\admin\Documents\VScode\Code>cmd /C "c:%u ...

我刚刚看了下,这样编我也是会的,我是想在我那个程序上面改,因为我对指针不是很明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-27 15:34:45 | 显示全部楼层
forever33221 发表于 2019-11-27 15:03
我刚刚看了下,这样编我也是会的,我是想在我那个程序上面改,因为我对指针不是很明白

代码逻辑都是一样的
  1. #include <iostream>
  2. #include <cstring>
  3. void _char(char *str)
  4. {
  5.     size_t count = 0;
  6.     std::cout<<"字符串中的数字有: ";
  7.     for (char* i = str; *i != '\0'; i++)
  8.     {
  9.         if (*i >= '0' && *i <= '9')
  10.         {
  11.             count++;
  12.             std::cout << *i;
  13.         }
  14.         if (*i > '9' || *i < '0')
  15.         {
  16.             std::cout << char(0);
  17.         }
  18.     }

  19.     std::cout << "\n字符串中的数字有" << count << "个" << std::endl;
  20. }
  21. int main(int argc, char const *argv[])
  22. {
  23.     char *s = "35dfa6+f5d6$%5%586";
  24.     _char(s);
  25.     return 0;
  26. }
复制代码

----------------------------------------------------
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。

E:\Users\admin\Documents\VScode\Code>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-vgzl1cdd.cme --stdout=Microsoft-MIEngine-Out-wlofnk4p.dtn --stderr=Microsoft-MIEngine-Error-r52enkrg.o0w --pid=Microsoft-MIEngine-Pid-kwvstymv.b1h --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
字符串中的数字有: 35   6  5 6  5 586
字符串中的数字有9


E:\Users\admin\Documents\VScode\Code>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-27 15:51:39 | 显示全部楼层
bin554385863 发表于 2019-11-27 15:34
代码逻辑都是一样的

----------------------------------------------------

好的,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 09:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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