鱼C论坛

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

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

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

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

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

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

int cal_num(char* str)
{
        char *pstr;
        int count;
        int number=0;
        pstr=str;
        while(*pstr!=0)
        {
                if(*pstr>='0'&&*pstr<='9')
                {
                        count++;
                        number=number*10+*pstr;//该句错误,如何修改,指针存储的数字应该如何加呢。
                }
                else
                {
                        cout<<number;//该句错误
                }
                pstr++;
        }
        cout<<"数字的个数是:"<<count;
}
int main()
{
        char str[MAX];
        cout<<"请输入一串字符:";
        cin>>str;
        cal_num(str);
} 
我想要在输出字符串数字个数的同时,输出字符串中的整数,例如:输入dasd566dsa13,输出:566,13,5,上述程序标注语句应该怎么修改啊,而且一个如何忽略数字间的其他字符呢,谢谢了。
最佳答案
2019-11-26 19:53:44
#include <iostream>
#include <string>
#include <cctype>
void calcstr(std::string &str)
{
    int count = 0;
    for (char &i : str)
    {
        if (isdigit(i))
        {
            count++;
        }
        if (!isdigit(i))
        {
            i = 0;
        }
    }
    std::cout << "字符串中数字的个数是:" << count << "\n"
              << "字符串中的数字有:" << str << std::endl;
}
int main(int argc, char const *argv[])
{
    std::string a = "gfgf122gf5f9g7+f+g854";
    calcstr(a);
    return 0;
}
-----------------------------------------------
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 | 显示全部楼层    本楼为最佳答案   
#include <iostream>
#include <string>
#include <cctype>
void calcstr(std::string &str)
{
    int count = 0;
    for (char &i : str)
    {
        if (isdigit(i))
        {
            count++;
        }
        if (!isdigit(i))
        {
            i = 0;
        }
    }
    std::cout << "字符串中数字的个数是:" << count << "\n"
              << "字符串中的数字有:" << str << std::endl;
}
int main(int argc, char const *argv[])
{
    std::string a = "gfgf122gf5f9g7+f+g854";
    calcstr(a);
    return 0;
}
-----------------------------------------------
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
我刚刚看了下,这样编我也是会的,我是想在我那个程序上面改,因为我对指针不是很明白

代码逻辑都是一样的
#include <iostream>
#include <cstring>
void _char(char *str)
{
    size_t count = 0;
    std::cout<<"字符串中的数字有: ";
    for (char* i = str; *i != '\0'; i++)
    {
        if (*i >= '0' && *i <= '9')
        {
            count++;
            std::cout << *i;
        }
        if (*i > '9' || *i < '0')
        {
            std::cout << char(0);
        }
    }

    std::cout << "\n字符串中的数字有" << count << "个" << std::endl;
}
int main(int argc, char const *argv[])
{
    char *s = "35dfa6+f5d6$%5%586";
    _char(s);
    return 0;
}
----------------------------------------------------
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-10-4 23:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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