ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
下一个任务是把文件中的数字从字符串形式转换为整型数。在书写较大的数字时,人们往往会用逗号将数字分组,如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的参数。