21xrx.com
2024-12-23 02:30:12 Monday
登录
文章检索 我的文章 写文章
C++逐个读取数字的方法
2023-07-05 00:09:23 深夜i     --     --
C++ 读取数字 逐个

对于C++语言的初学者来说,读取数字可能是一个比较基础且重要的操作。在批量处理数据时,需要逐个读取数据,这可能就需要用到逐个读取数字的方法。在以下内容中,我们将会介绍几种C++逐个读取数字的方法。

1. getline方法

C++ 中 getline 方法可以逐行读取字符串,如果需要逐个读取字符串中的数字,可以使用如下代码:


string str;

getline(cin,str);

int len = str.length(); //计算字符串的长度

for(int i = 0; i < len; i++){

  if(str[i] >= '0' && str[i] <= '9'){

    int num = 0;

    while(str[i] >= '0' && str[i] <= '9'){

      num = num * 10 + (str[i] - '0');

      i++;

    }

    cout << num << " ";

  }

}

这里的 getline 方法是读取一行字符串,并将该字符串存入 str 中。之后,遍历字符串的每个字符,如果某个字符是数字,则进行处理。使用另外一个 while 循环可以将连续的数字字符转化为一个数字,最后输出即可。

2. cin.get方法

C++ 中 cin.get 可以逐个读取字符。需要逐个读取字符串中的数字时,可以使用如下代码:


char ch;

int num = 0;

while(cin.get(ch)){

  if(ch >= '0' && ch <= '9'){

    num = num * 10 + (ch - '0');

  }

  else if(ch == '\n')

    break;

  

}

cout << num << endl;

当遍历到数字字符时,将字符转化为数字,并用变量 num 储存。如果读取到了换行符,循环结束,并输出 num 的值即可。

3. scanf方法

C++ 中 scanf 可以进行格式化输入,可以使用该方法逐个读取字符。需要逐个读取字符串中的数字时,可以使用如下代码:


char ch;

int num;

while(scanf("%c",&ch)!=EOF){

  if(ch >= '0' && ch <= '9'){

    num = ch - '0';

    while(scanf("%c",&ch)){

      if(ch >= '0' && ch <= '9'){

        num = num * 10 + (ch - '0');

      }

      else

        break;

      

    }

    cout<<num<<endl;

  }

}

当遍历到数字字符时,将字符转化为数字,并用变量 num 储存。使用 scanf 可以获取一个字符,参数 %c 表示读取字符,读取的结果存储在变量 ch 中。如果读取到了数字字符,使用循环读取这个数值。如果读取到了非数字字符,跳出循环并输出 num 的值即可。

以上就是 C++ 逐个读取数字的几种方法。在使用过程中,根据不同的需求和情况,千万不要混淆这些方法。同时,在使用 getline, cin.get 和 scanf 方法时,一定要注意输入数据的存储类型,以免出现类型转换错误。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复