codecamp

C++ 解析数字

下一个任务是把文件中的数字从字符串形式转换为整型数。在书写较大的数字时,人们往往会用逗号将数字分组,如1,750。而计算机处理数字时,绝大部分情况是不包括逗号的,而且内置的读取数字的函数通常不能处理逗号。这就增加了转换的困难,不过也给了我们一个机会来编写去掉逗号的函数,所以这也没什么。去掉逗号之后,我们就可以使用库函数atoi将字符串转换为整型数了。atoi在头文件stdlib.h中定义。

要去掉逗号,一个选择就是遍历字符串,检查每个字符是否是数字。如果是的话,我们就将其加入结果字符串中。在循环结束时,原始字符串中的所有数字就都按顺序包含到结果字符串中了。

int convertToInt (const apstring& s)
{
  apstring digitString = "";

  for (int i=0; i<s.length(); i++) {
    if (isdigit (s[i])) {
    digitString += s[i];
    }
  }
  return atoi (digitString.c_str());
}

变量digitString是累加器的一个例子。累加器和我们在第7.9节见过的计数器比较相似,不过计数器是不断地增加值,而累加器是每次以字符串连接的方式增加一个字符。

表达式

digitString += s[i];

等价于表达式

digitString = digitString + s[i];

两条语句都是在现有字符串末尾添加一个字符。

因为atoi以一个C字符串作为参数,所以我们必须先把digitString转化为C字符串,然后才能将其作为atoi的参数。

C++ 解析输入
C++ 集合数据结构Set
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }