本题要求统计输入字符串中数字字符('0' ~ '9')的个数。需要注意以下几点:
cin >>(它会以空格作为分隔符)遍历字符串的每一个字符,判断它是否在 '0' 到 '9' 的范围内,如果是则计数器加 1。
getline() 读取整行字符串(包括空格)count = 0c 满足 '0' <= c <= '9',则计数器加 1cpp1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() { 6 string s; 7 getline(cin, s); // 读取整行,包括空格 8 9 int count = 0; 10 for (char c : s) { // C++11 范围for循环 11 if (c >= '0' && c <= '9') { 12 count++; 13 } 14 } 15 16 cout << count << endl; 17 return 0; 18}
cpp1getline(cin, s); // 读取整行
cin >> s 遇到空格会停止读取getline() 读取完整一行cpp1if (c >= '0' && c <= '9')
isdigit(c) 函数(需要 <cctype> 头文件)cpp1for (char c : s) // 范围for循环(C++11)
等价于:
cpp1for (int i = 0; i < s.length(); i++) { 2 char c = s[i]; 3 // ... 4}
cpp1cin >> s; // 无法读取空格后的内容
输入 "abc 123" 时,只会读到 "abc",丢失了 "123"
cpp1if (c >= 0 && c <= 9) // 错误!
这是判断数值范围,但 c 是字符,应该判断字符的 ASCII 码范围
cpp1if (isdigit(c)) // 需要 #include <cctype>
如果要求统计数字的个数(如 "123" 算作 1 个数字),可以使用状态机或正则表达式,但本题明确要求统计数字字符,所以逐个字符判断即可。
这道题是一道基础的字符串处理题目,核心是:
getline() 正确处理带空格的输入掌握这些基础操作对于处理字符串类问题非常重要。
本题要求统计输入字符串中数字字符('0' ~ '9')的个数。需要注意以下几点:
cin >>(它会以空格作为分隔符)遍历字符串的每一个字符,判断它是否在 '0' 到 '9' 的范围内,如果是则计数器加 1。
getline() 读取整行字符串(包括空格)count = 0c 满足 '0' <= c <= '9',则计数器加 1cpp1#include <iostream> 2#include <string> 3using namespace std; 4 5int main() { 6 string s; 7 getline(cin, s); // 读取整行,包括空格 8 9 int count = 0; 10 for (char c : s) { // C++11 范围for循环 11 if (c >= '0' && c <= '9') { 12 count++; 13 } 14 } 15 16 cout << count << endl; 17 return 0; 18}
cpp1getline(cin, s); // 读取整行
cin >> s 遇到空格会停止读取getline() 读取完整一行cpp1if (c >= '0' && c <= '9')
isdigit(c) 函数(需要 <cctype> 头文件)cpp1for (char c : s) // 范围for循环(C++11)
等价于:
cpp1for (int i = 0; i < s.length(); i++) { 2 char c = s[i]; 3 // ... 4}
cpp1cin >> s; // 无法读取空格后的内容
输入 "abc 123" 时,只会读到 "abc",丢失了 "123"
cpp1if (c >= 0 && c <= 9) // 错误!
这是判断数值范围,但 c 是字符,应该判断字符的 ASCII 码范围
cpp1if (isdigit(c)) // 需要 #include <cctype>
如果要求统计数字的个数(如 "123" 算作 1 个数字),可以使用状态机或正则表达式,但本题明确要求统计数字字符,所以逐个字符判断即可。
这道题是一道基础的字符串处理题目,核心是:
getline() 正确处理带空格的输入掌握这些基础操作对于处理字符串类问题非常重要。