如何对字符串逐个读取

时间:2022-02-17 21:02:43
定义一个未知长度的字符串,怎么将每个字符逐个读取出来?比如说输入一个字符串,怎么样确定里面含有数字的个数?谢谢

8 个解决方案

#1


假设你输入一串字符,scanf,fscanf等等函数了,依次读取字符,判断字母是否大于等于'0'小于等于'9'。不就算是数字了么

#2


按C的风格,你就写个while,条件就是遇到0就算字符串结束。

bufText
while(bufText[i] != 0)
{
    1楼的方法判断出数字;
     i++;
}

#3



#include <iostream>
#include <string>
using namespace std;
int main()
{
string tStr;
cin>>tStr;

int tCount = 0;
int tLen = tStr.length();
for(int i=0; i<tLen; i++)
if(('0'<=tStr[i])&&('9'>=tStr[i]))
tCount++;

return 0;
}

#4


同意楼上

#5


#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.

#6


先谢谢你了,早上看到没人回复就下了,现在才上,我先试试哈
引用 3 楼  的回复:
C/C++ code

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string tStr;
    cin>>tStr;
    
    int tCount    = 0;
    int tLen    = tStr.length();
    for(int i=0; i<tL……

#7


C语言我一点也不懂,不过三楼的代码让我现在明白了C++逐个读取字符串了,还是非常感谢你的帮忙
引用 2 楼  的回复:
按C的风格,你就写个while,条件就是遇到0就算字符串结束。

bufText
while(bufText[i] != 0)
{
    1楼的方法判断出数字;
     i++;
}

#8


关键就是我当时不知道怎样依次读取,不过现在知道了,还是谢谢你的热心帮忙
引用 1 楼  的回复:
假设你输入一串字符,scanf,fscanf等等函数了,依次读取字符,判断字母是否大于等于'0'小于等于'9'。不就算是数字了么

#1


假设你输入一串字符,scanf,fscanf等等函数了,依次读取字符,判断字母是否大于等于'0'小于等于'9'。不就算是数字了么

#2


按C的风格,你就写个while,条件就是遇到0就算字符串结束。

bufText
while(bufText[i] != 0)
{
    1楼的方法判断出数字;
     i++;
}

#3



#include <iostream>
#include <string>
using namespace std;
int main()
{
string tStr;
cin>>tStr;

int tCount = 0;
int tLen = tStr.length();
for(int i=0; i<tLen; i++)
if(('0'<=tStr[i])&&('9'>=tStr[i]))
tCount++;

return 0;
}

#4


同意楼上

#5


#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.

#6


先谢谢你了,早上看到没人回复就下了,现在才上,我先试试哈
引用 3 楼  的回复:
C/C++ code

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string tStr;
    cin>>tStr;
    
    int tCount    = 0;
    int tLen    = tStr.length();
    for(int i=0; i<tL……

#7


C语言我一点也不懂,不过三楼的代码让我现在明白了C++逐个读取字符串了,还是非常感谢你的帮忙
引用 2 楼  的回复:
按C的风格,你就写个while,条件就是遇到0就算字符串结束。

bufText
while(bufText[i] != 0)
{
    1楼的方法判断出数字;
     i++;
}

#8


关键就是我当时不知道怎样依次读取,不过现在知道了,还是谢谢你的热心帮忙
引用 1 楼  的回复:
假设你输入一串字符,scanf,fscanf等等函数了,依次读取字符,判断字母是否大于等于'0'小于等于'9'。不就算是数字了么