c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度

问题描述

c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度

我在统计中文的时候出现了问题,请各位大神指教一下
#include
#include
using namespace std;
int main()
{

string str;
cout << "请输入一个字符串,以换行为结束!n";
getline(cin, str);
size_t count = 0;
size_t spaceNum=0;
size_t letter=0;
size_t chineseNum=0;
size_t other=0;
for(size_t i = 0; i < str.size(); i++) //如果变量i 小于等于字符串str长度的时候,就继续循环,反之 循环结束
    if(isdigit(str[i])) //判断是否是数字
        count++;
    else if(isspace(str[i]))//判断是否是空格
        ++spaceNum;
    else if(isalpha(str[i]))//判断是否是字母
        ++letter;

    else if(str[0]>=0xB0)
        ++chineseNum;

    else
        ++other;

cout<<"字符串所占字节"<<sizeof str<<"n"<<endl;
cout << "数字的个数为: " << count <<"n"<< endl;
cout<<"空格的个数是"<<spaceNum<<"n"<<endl;
cout<<"字母的个数是"<<letter<<"n"<<endl;
cout<<"其他字符的个数是"<<other<<"n"<<endl;
cout<<"中文的个数是"<<chineseNum<<"n"<<endl;

system("pause");

}

解决方案

我发现你所显示的代码中函数没有反回值

解决方案二:

一个中文占两个字符,当你判断到是汉字时,还是 i++就不对了吧

解决方案三:

else if(str[0]>=0xB0)(str[0]<0来判断是否中文)

解决方案四:

str[i]不是str[0]

解决方案五:

逻辑上出问题了吧,你统计中文,但除了你的那几个if,else的情况,还是有情况既不是中又不是字母,数字,而是符号吧

解决方案六:

中文是占二个字节的。你的代码实现不了这个功能

解决方案七:

将string str;换为char str[一个常数];cin.getline(str,一个常数);改成这样就行了

时间: 2024-09-20 18:44:15

c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度的相关文章

c++编程题统计输入的内容中有几个字母、数字和其他字符

问题描述 c++编程题统计输入的内容中有几个字母.数字和其他字符 2.统计输入的内容中有几个字母.数字和其他字符. 提示: (1)变量c应该定义为int. 这是因为后面的EOF常量的值超出了字符类型char的表示范围. EOF的值一般为-1 (2)程序示例比较粗糙, 自行考虑是否应该选用if ... else ...结构 (3)判定是否为字母和数字,系统有库函数可供选用.#include int c; while ((c=getchar())!=EOF){ if (c是字母) ... if (c

编程c语言-计算输入字符串的空格数有错,希望大神不吝赐教

问题描述 计算输入字符串的空格数有错,希望大神不吝赐教 #include int main() { int i,t=0; char a[100]; printf("please enter 字母:n"); gets(a); for(i=0;a[i]!='';i++) { if(a[i]=='32') //32是空格的ascall码 t++; } printf("空格个数为:%dn",t); return 0; } 解决方案 既然是用ascii码判断,直接判断a[i]

printf-c语言去除控制台输入字符串的空格

问题描述 c语言去除控制台输入字符串的空格 #include void f(char *); int main(void) { char str[100]; scanf("%s", str); f(str); return 0; } void f(char *str) { char str1[100]; int i = 0, j = 0; while(str[i] != '') { if(str[i] != ' ') { str1[j] = str[i]; j++; } i++; }

c++-编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串。

问题描述 编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串. 编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定字符后输出该字符串.例如,输入"jiangsu123"和删除位置5,则输出"jiansu123". 解决方案 #include <iostream> #include <string> using namespace std; int main() { char s1[100];

输入一行字符并统计出其中英文字母、空格、数字和其它字符的个数

查看全套"c语言习题集" 题目: 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 1.程序分析:利用while语句,条件为输入的字符不为'\n'. 2.程序源代码: #include "stdio.h"#include "conio.h"main(){ char c; int letters=0,space=0,digit=0,others=0; printf("please input some character

剑指offer 面试题4—替换字符串中空格

题目: 实现一个函数,把字符串中的每个空格替换成"%20".加入输入"we are happy.",则输出"we%20are%20happy.". 它想说的思想: 如果是字符数组来存储的话,每次扫描遇到空格都会导致后面的字符向后移动,然后为了节省这么多移动的时间,就先统计空格的个数,然后数组整体扩容空格数乘以3的空间,把那里当作结束,再从尾到头遍历,找到空格就移,这样整体就只移过了一次.效率会高很多. 举一反三: 合并两个数组(包括字符串)时,如

C语言中关于计算字符串中空格数的问题

以下是C语言代码:(请参看注释) #include <iostream>#include <stdlib.h>#include <stdio.h>using namespace std;int main(int argc, char *argv[]){ int count = 0 ; char* str ; printf("Input a string:"); gets(str); //此处不能使用scanf(%s,str)或者cin>>

正则表达式-Java中如何给字符串加空格

问题描述 Java中如何给字符串加空格 Java中如何在一个字符串中每隔四个字符,加入一个空格,然后再将字符串输入到一个新定义的字符串,如: str1=ADSFBKI89H8H8M8J8F8T9%Th09I; 我需要每隔四个加一个空格,有几种实现方法?? 解决方案 给一种实现,直接上代码...... import java.util.Arrays; public class Test09 { public static void main(String[] args) { String old=

js去字符串前后空格的实现方法_javascript技巧

当我们进行一些页面编辑时,字符串前后的空格,通常是无效的.因此需要在获取信息时,进行过滤. 比如: 输入:[空格][空格]a[空格]b[空格][空格][空格] 得到:a[空格]b 代码如下: 去掉前面的空格 function LTrim(str){ var i; for(i=0;i<str.length;i++){ if(str.charAt(i)!=" ") break; } str = str.substring(i,str.length); return str; } 去掉