21xrx.com
2025-03-31 08:44:16 Monday
文章检索 我的文章 写文章
C++逐个读取数字的方法
2023-07-05 00:09:23 深夜i     39     0
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 方法时,一定要注意输入数据的存储类型,以免出现类型转换错误。

  
  

评论区