zoukankan      html  css  js  c++  java
  • C++下面关于字符串数组的一些操作

    今天在写一个搜索引擎的分词系统,是很简单的那种,但是居然费了我一天的时间还没完成,晚上估计还得弄一会了,但是在这个过程中,遇到了集中关于字符串数组的操作,值得和大家分享一下。

    首先是关于统计字符串数组元素的个数:

    字符串数组不同于整型数组,每一个字符串所占的空间是不一样的,不能用sizeof简单的计算出来。下面是示例代码:

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        string str[] = {"abfafawfefw","defg","32121","Miss","11111"};
        cout << sizeof(str) / sizeof(str[0]);
        return 0;
    }

    字符串数组存取方式采用了对齐原则,占用空间少的向占用空间多的靠齐,首先使用sizeof(str)首先获得所用的所用字节数,使用sizeof(str[0])再计算数组中一个元素平均占用的字节数。然后除一下,就是元素个数,但是注意,被除的那个元素应该是所占空间最大的那个。

    然后是关于统计字符串数组各个元素出现的次数:

    这个是我用在统计分词后得到的词组各自的频次的,但是不知道出了什么问题,一直实现不了,虽然我知道这个确实是很简单的一个问题。

    我通过大百度找到了一种统计次数的方法,他是统计整型数组的,但是感觉很不错,但是我暂时还没有验证,先贴出来吧:

    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
        int a[100],b[100],c[100]={0},i,j;
        //a数组放随机数
        //b数组放是否被统计的标志,1未统计,0已统计
        //c数组放对应a数组中随机数出现的次数
        for(i=0;i<100;i++)
        {
            a[i]=rand()()%21;//产生0~20的随机数
            b[i]=1;//未统计
            printf("%5d",a[i]); //打印a数组的值
            if((i+1)%10==0)     //一行打印10个数
                printf("
    ");
        }
        printf("
    ");
        for(i=0;i<100;i++)
        {
            if(b[i])  //若a[i]未被统计
            {
                c[i]++;  //次数加1
                for(j=i+1;j<100;j++)//从下一个开始向后查找
                    if(a[j]==a[i]) //若相等
                    {
                        c[i]++;   //则次数增1
                        b[j]=0;   //改为已统计
                    }
            }
        }
        for(i=0,j=1;i<100;i++)
        {
            if(c[i])  //若某随机数出现了,则打印其值和出现次数
                printf("%3d:%5d 出现 %3d次
    ",j++,a[i],c[i]);
        }
    }

    他用了一个统计标志,这个很适合我现在的这个问题,也希望能对大家有用吧,谢谢了。

    下面是CSDN上一个很不错的关于C++的各类总结,这个链接是字符串的。

    http://blog.csdn.net/wangfengwf/article/details/11496141

  • 相关阅读:
    <Listener>HttpSessionListener和HttpSessionAttributeListener区别
    @WebFilter怎么控制多个filter的执行顺序
    Springboot+Mybatis+MySQL实例练习时踩坑记录
    Git学习篇之git remote add origin错误
    Springboot高版本中@ConfigurationProperties注解取消location属性
    mevan中GroupId和ArtifactId到底怎么填?
    sqrt()函数对素数判断的优化
    oj错误之char型超出范围
    排序算法之桶排序
    Spring中常用注解
  • 原文地址:https://www.cnblogs.com/sexybear/p/Cpp_string.html
Copyright © 2011-2022 走看看