forever33221 发表于 2019-11-26 17:52:24

关于字符串中所含整数输出的问题

#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;
        cout<<"请输入一串字符:";
        cin>>str;
        cal_num(str);
}
我想要在输出字符串数字个数的同时,输出字符串中的整数,例如:输入dasd566dsa13,输出:566,13,5,上述程序标注语句应该怎么修改啊,而且一个如何忽略数字间的其他字符呢,谢谢了。

bin554385863 发表于 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
字符串中的数字有:    1225 9 7    854

E:\Users\admin\Documents\VScode\Code>

forever33221 发表于 2019-11-27 12:18:09

bin554385863 发表于 2019-11-26 19:53
-----------------------------------------------
E:%users\admin\Documents\VScode\Code>cmd /C "c:%u ...

我对照着看一下,谢谢啦

forever33221 发表于 2019-11-27 15:03:50

bin554385863 发表于 2019-11-26 19:53
-----------------------------------------------
E:%users\admin\Documents\VScode\Code>cmd /C "c:%u ...

我刚刚看了下,这样编我也是会的,我是想在我那个程序上面改,因为我对指针不是很明白

bin554385863 发表于 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   65 65 586
字符串中的数字有9个

E:\Users\admin\Documents\VScode\Code>

forever33221 发表于 2019-11-27 15:51:39

bin554385863 发表于 2019-11-27 15:34
代码逻辑都是一样的

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


好的,谢谢啦
页: [1]
查看完整版本: 关于字符串中所含整数输出的问题