精华内容
下载资源
问答
  • 字符串倒序 #include <iostream> #include<cstdlib> #include<string> using namespace std; int main() { string s="abcde",temp; temp=s;//注意要设置一个字符串变量承接倒序后的字符串,而且...

    字符串倒序

    #include <iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main()
    {
        string s="abcde",temp;
        temp=s;//注意要设置一个字符串变量承接倒序后的字符串,而且要对字符串进行初始化,把S赋值给temp
        for(int i = 0; i<s.size();++i)
        {
            temp[i]=s[s.size()-i-1];
        }
        cout<<temp<<endl;
        return 0;
    }
    
    

    查找子串

    #include <iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main()
    {
        string s="abcdabcdabcdabcd",temp;
        int n=0;//字符串的首位置是0
        int sum=0;//当不知道有多少个子串的时候用while
        while(s.find("cd",n)!=string::npos)//string::npos判断是否查找到这个字串,如果没有查找到就返回这个值
        {//字符串的长度与位置变量,类型都是"string::size_type"实际上是一个无符号的长整数,在平时练习时,由于字符串都比较短,所以可以使用int
        //或long类型的变量来表示
            n=s.find("cd",n);
            cout<<n<<endl;
            ++n;
            ++sum;
        }
        cout<<sum<<endl;
        return 0;
    }
    
    

    连接两个字符串

    #include <iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main()
    {
        string s1="abc",s2="def";
        string temp=s1+s2;
        cout<<temp;
        return 0;
    }
    
    

    取子串

    #include <iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main()
    {
        string s1="abc我爱祖国edf";
        string s2="我爱祖国";
        int n;
        n=s1.find(s2,0);
        string s3=s1.substr(n,s2.size());
        cout<<s3<<endl;
        return 0;
    }
    
    

    替换子串

    #include <iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main()
    {
        string s1="abcedf";
        string s2="ce";
        int n=s1.find(s2,0);
        s1.replace(n,s2.size(),"a");
        cout<<s1<<endl;
        return 0;
    }
    
    

    删除子串

    #include <iostream>
    #include<cstdlib>
    #include<string>
    using namespace std;
    int main()
    {
        string s1="abcedf";
        string s2="ce";
        int n=s1.find(s2,0);
        s1.erase(n,s2.size());
        cout<<s1<<endl;
        return 0;
    }
    
    
    展开全文
  • 获取字符串中子串

    千次阅读 2017-07-05 14:21:36
    去除字符串中空格的基本思想:从字符串第一个字符串开始遍历,若遇到空格,就将空格后的字符前移,重复直至遍历到字符串结束。 提取主字符串中子串的基本思想:使用一字符指针数组,将主字符串中子串分离出来...

    下列代码实现了:去除字符串中空格、字符串的分割


    去除字符串中空格的基本思想:从字符串第一个字符串开始遍历,若遇到空格,就将空格后的字符前移,重复直至遍历到字符串结束。


    提取主字符串中的子串的基本思想:使用一字符指针数组,将主字符串中的子串分离出来,每分离出来一个子串就为该子串另外分配空间,并存入指针数组。

    值得注意的是:指针数组初始时自己并不带有那么多的地址空间,它只是通过指针,来指向别的地址,因而在分离主字符串中的子串时要实行深拷贝


    例:主串为:computer data structrue,那么获取出来的字串应该为computer、data、sturctrue这三个子串。


    下面是具体实现:

    /*trimed.cpp
    *author:xwz
    *compiler:Dev c++
    *2017-7-5
    */
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    void trim(char* str)
    {
    	//去除字符串str中的空格 
    	int j,i=-1;
    	int len = strlen(str);
    	
    	if(len)
    	{
    		while(str[++i] != '\0')				
    		{
    				if(str[i] == ' ')
    				{
    					for(j=i; j<len; ++j)
    						str[j] = str[j+1];	
    				}
    				//连续两个或两个以上的空格 
    				if(str[i] == ' ')
    					trim(str);
    		}
    	}	
    } 
    
    void ExtractKeyWord(char *str,char **pstr)
    {
    	//将字符串str中的子串存到指针数组pstr中 
    	int j,len,w,m,n,i=0,k=0;				
    	int nLen = strlen(str);		
    	char *p,*sub=NULL;
    
    	while (i < nLen)
    	{
    		j = i;					//开始截取位置 
    		while ((str[i] != ' ') && (str[i] != '\0'))			//遇到空格 
    			++i;
    	
    		len = i - j;		//截取长度 
    		
    		//截取字符串 
    		if(nLen)
    		{
    			if(sub) free(sub);
    			
    			if(!(sub = (char*)malloc(len*sizeof(char)+1)))
    				exit(0);
    			//从第主字符串j位置开始截取长度为len的字串 
    			for(m=0,n=j; m<len && n<j+len;++m,++n)
    				 sub[m]=str[n]; 
    				 
    			sub[len] = '\0';
    		}
    		
    		if (len)
    		{
    			//实行深拷贝
    			char *p = (char*)malloc(len*sizeof(char) + 1);
    			w = 0;
    			while (*(p + w) = *(sub + w++));				//拷贝 
    			pstr[k++] = p;
    		}
    
    		while (str[i] == ' ')							//去除连续空格
    			++i;
    	}
    	
    	free(sub);
    }
    
    int main() 
    {
    	int i;
    	char str1[] = "hello world";
    	char str2[] = "computer data structrue";
    	char *pstr[10] = {NULL};				//可以存放10个字符串的指针数组 
    	
    	printf("before trimmed: str1 = %s\n",str1);
    	trim(str1);
    	printf("after trimmed: str1 = %s\n\n",str1);
    
    	printf("before extract: %s\n",str2);
    	ExtractKeyWord(str2,pstr);
    	
    	printf("after extract:\n");
    	for(i=0;i<10;i++)
    		if(pstr[i])
    			printf("%s\n",pstr[i]);
    			
    	for(i=0;i<10;++i)
    	{ 
    		//释放指针数组中的堆空间 
    		if(pstr[i])
    		{
    			free(pstr[i]); 
    			pstr[i] = NULL;
    		}
    	} 
    	
    	getchar();
    	return 0;
    }






    展开全文
  • C语言版字符串中获得子串的函数,获取字符串中指定位置的子串。如同C++的string类型、VC++CString类型、Objective-C的NSStringd等字符串的获取子串的方法,C语言版可以通用于各大平台,方便进行代码移植。

    说明:

        如同C++中的string类型、VC++中CString类型、Objective-C的NSStringd等字符串类中的获取子串的方法,C语言版可以通用于各大平台,方便进行代码移植。


    测试环境:

        操作系统: Windows10 64位

        运行环境: Visual Studio 10


    依赖的头文件:

    #include <string.h>
    #include <stdlib.h>



    函数:

    /***************************************************************
    /*	函 数 名:GetSubstring
    /*	函数功能:C语言版,获得字符串中指定位置的子串
    /*	参    数:
    /*			  strSource:源字符串
    /*			  uStartPos:子串在源串的起始位置
    /*			  uEndPos:  子串在源串的结束位置
    /*	返 回 值:
    /*			  如果成功,则返回子串
    /*			  如果失败,则返回空串
    /*
    /*	作    者:X攻城狮
    /*	日    期:2015年11月4日
    /***************************************************************/
    char* GetSubstring(const char *strSource, const unsigned int uStartPos, const unsigned int uEndPos)
    {
    	unsigned int uLen = strlen(strSource);
    	if (uLen == 0)
    	{
    		return "";
    	}
    	char *strTemp = (char *)malloc(uLen+1);
    	memset(strTemp, 0, uLen+1);
    	strcpy(strTemp, strSource);
    
    	if(uStartPos > uLen)
    	{
    		free(strTemp);
    		return "";
    	}
    
    	uLen = uEndPos - uStartPos;
    	char *strSub = (char *)malloc(uLen+1);
    	memset(strSub, 0, uLen+1);
    
    	unsigned int i;
    	for(i=0; i<=uLen; i++)
    	{
    		strSub[i] = strTemp[uStartPos + i];
    	}
    	strSub[i] = '\0';
    
    	free(strTemp);
    
    	return strSub;
    }



    展开全文
  • VC中字符串取子串总结

    千次阅读 2010-05-14 13:10:00
    VC中字符串取子串总结 最近变成经常用到字符串处理操作, 其中最多的就是字符串取子串了。今天正好看到这样一个帖子,总结的不错, 引进过来。------------------一。前言程序经常会遇到要处理用某些符号...

    VC中字符串取子串总结

    最近变成中经常用到字符串处理操作, 其中最多的就是从字符串中取子串了。
    今天正好看到这样一个帖子,总结的不错, 引进过来。
    ------------------
    一。前言
    程序中经常会遇到要处理用某些符号(如空格,或“, ; . | /t”等)分隔的字符串的问题,我在此做了一些总结和比较。
     
    二。处理方法
    1. 用MFC CString之Find处理字符串
    // 以下方法将一个字符串分解后放到一个CStringArray中:
    void ExtractString(CStringArray& arr, const CString strSrc, const CString sep = "/r/n" )
    {
     // 预处理: 可根据需要决定是否需要Trim,以及是Trim掉空格/还是分隔符/还是其它
     CString str(strSrc);
     str.TrimLeft(); 
     str.TrimRight();
     
     if(str.IsEmpty())
      return;
     
     // 开始分解
     int pos = str.Find(sep);
     while (pos != -1)
     {
      //if(!str.Left(pos).IsEmpty()) // 如有必要也可在此Trim后再判断是否为空,为空则舍弃
      arr.Add(str.Left(pos));
     
      str = str.Mid(pos + sep.GetLength());
      pos = str.Find(sep);
     }
     
     arr.Add(str); // think
    }
     
    // BTW,CString提供了TrimLeft和TrimRight,却不能一次TrimAll,并返回Trim后的字符串,我写了一个:
    CString TrimAll(CString str, CString strTrim = " ")
    {
     str.TrimLeft(strTrim);
     str.TrimRight(strTrim);
     
     return CString(str);
    }
     
    // 同样是用Find处理字符串,和以上处理方式稍有不同,试比较:
    void ExtractString2(CStringArray& arr, const CString strSrc, const CString sep = "/r/n" )
    {
      CString str(strSrc);
      if(TrimAll(str).IsEmpty())
      return;
     
     // 开始分解
     int pos = str.Find(sep);
     if(pos == -1) // 未找到分隔符
      arr.Add(str);
     else   // 找到分隔符
     {
      str += sep;    // think
     
      CString s;
      while (pos != -1)
      {
       s = str.Left(pos);
       if(!TrimAll(s).IsEmpty())
        arr.Add(s);
     
       str = str.Mid(pos + sep.GetLength());
       pos = str.Find(sep);
      }
     }
    }
     
    2. 用MFC未公开函数AfxExtractSubString 处理
    // 以下为函数定义及说明:
    // AfxExtractSubString 从一个字符(chSep)分隔的字符串(lpszFullString)中取出第iSubString个子串,输出到rString
    BOOL AFXAPI AfxExtractSubString (  
        CString& rString,                 // 用于输出子串
        LPCTSTR lpszFullString,     // 被分隔的字符串
        int iSubString,                      // zero-based substring index
        TCHAR chSep = '/n'           // 分隔符
        )
     
    // eg:
    CString sDesc= "张三|男|28|医生";
    CString sOccupation;
    if(AfxExtractSubString ( sOccupation, sDesc, 3, '|'))
        cout << "职业:" << sOccupation << endl;
     
    3. 用C语言之strtok函数处理
    #include <assert.h>
    void test()
    {
     char* str = "06317377244|13805871280|20040210105049|193|NBGW1|040C|0017|8";
     char seps[]   = ",;|";
     
     char* temp = (char*)malloc(sizeof(char) * (strlen(str)+1));
        strcpy(temp, str);
     
        char* token = strtok(temp, seps);
        while (NULL != token)
        {
      printf("%s/t", token);
      token = strtok(NULL, seps);
        }
     
     free(temp);
    }
     
    4. 其它方法
    当然既然能用MFC的Find函数进行处理,也可能string的find处理,甚至可用最原始的字符比较,再配合一些字串处理函数进行处理。
    但我觉得我提供的使用Find类函数处理字串的2种方法非常常用,可供参考。
     
    三。比较
    处理方法
    用MFC CString之Find处理字符串分隔符可是是字符或字串;
    在MFC中是最常用的方法。
    仅限于MFC中使用
    用AfxExtractSubString 处理 完全封装,调用简单;
    分隔符可是是字符或字串。
    仅限于MFC中使用,且未公开;
    一般用于取其中某个子串。
    用C语言之strtok函数处理分隔符可以同时指定多个字符,可用于分隔符不是很确定的情况。分隔符只能是字符;
    C库函数,在C兼容开发环境中通用。
     
    四。后记
    以上只是我从个人的角度做的一个小结(我用MFC/C++多一些),难免有失偏颇,在BCB/Delphi中肯定也有对应的方式方法,不在本文的讨论范围内,这里就不再赘述。
    展开全文
  • VC中字符串取子串总结

    千次阅读 2012-02-12 13:18:27
    最近变成经常用到字符串处理操作, 其中最多的就是从字符串中取子串了。 今天正好看到这样一个帖子,总结的不错, 引进过来。 ------------------ 一。前言 程序经常会遇到要处理用某些符号(如空格,或“, ...
  •  给定一个字符串str,求其中全部数字串所代表的数字之和。要求如下: 忽略小数点字符,例如“A1.3”,其中包含两个数字1和3. 如果紧贴数字子串的左侧出现字符“-”,当连续出现的数量为奇数时,则数字视为负,...
  • 子串定义:将给定的字符串去除任意个字符后,例如acb的子串有a、b、c、ab、ac、cb、acb。...-- 求取字符串的最大子串 function GetMaxSubString(str) -- body local str = string.reverse(str) local ret_...
  • 思路:将字符串中的每个字符都作为回文串的中心(此处应该考虑到回文串长度为偶数的时候有两个中心)中心向两边扩展求出一个回文串的长度遍历完字符串最长的回文串 class Solution { public String ...
  • 字符串中最长子串

    2020-02-17 21:49:45
    这周开工第一天, 本地环境就出现了bug,调试了一下午才解决, 今天就跟大家来简单分享一个算法吧. /** *求最大字符串的一个子串 * @Date ...
  • SQL Server 查找字符串中子串

    万次阅读 2016-08-27 17:39:43
    对于SQL Server查找字符串子串这个问题,许多人第一个想法是使用like,没错,但是如果出现如下的情况使用like就无法解决: 查找一个表的列的数据是否是另一个表中一个列的数据的子串,这时由于两个列都是...
  • /************************************************************************/ .../* 字符串切割函数  strOperator代表需要提取的字符串,strSeq代表分隔符, nHalfNum代表第一部分显示
  • 字符串:单据编号为:[单据头.单据编号],制单日期为:[单据头.业务日期],制单人是:[单据头.制单人],请审核.希望得到如下的数组:[[单据头.单据编号],[单据头.业务日期],[单据头.制单人]]public ...
  • Java求字符串的所有子串

    千次阅读 2019-08-31 19:55:10
    Java 求字符串的所有子串字符串的所有子串 输入. abc 输出. a ab ac b bc c 代码. class GetSubstring{ public static void main(String[] args){ String str = "abbc"; System.out.println(str); Syste...
  • 从字符串@"Welcome to Bejing!",查找 Beijing的范围。 */ #import int main(int argc, const char * argv[]) { @autoreleasepool { NSString * str1 = @"Welcom to Beijing"; NSString * str2 =
  • 字符串t查找子串p时,求第一次匹配的序号。 算法思想:假设t和P是两个给定的串,在t寻找与p相同子串的过程叫做模式匹配,一般t称为正文,p称为模式,t的长度大于p的长度。如果在t找到等于p的子串,则匹配...
  • 字符串取子串

    2017-02-26 20:44:28
    函数原型: char *strncpy(char *dest, const char *src,int count)函数功能: 将字符串src的count个字符拷贝到字符串dest去函数返回: 指向dest的指针参数说明: dest-目的字符串,src-源字符串,c...
  • 查找字符串中子串

    2016-03-18 16:41:43
    假设有一个字符串“D:\C#程序设计\实验3\MyFile.TXT “取出路径的文件名“MyFile.TXT” 示例代码如下:   using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
  • Golang获取中文字符串子串字符位置及截取子串 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:...
  • 字符串的最大子串问题

    万次阅读 2018-09-03 16:04:48
    基于字符串的最大子串...2:同一个字符串中相同的最大子串问题 例如输入qweabcuwabcfw,输出结果为:重复字符串的长度3和位置4 一:求两个字符串的最大公共子串 #include&lt;iostream&gt; #...
  • 其中 substr(i, j) 意思是字符串从 i 位置,到 i 开始的第 j 个字符,这几个字符能表达的所有子串; #include<iostream> #include<string> using namespace std; void getAllSubstrings(string ...
  • 输入2个字符串S1和S2,要求删除字符串S1出现的所有子串S2,即结果字符串中不能包含S2。 提示:输入数据的设计使得不可能出现输出为空的情况。#include #include #include /* * 输入2个字符串S1和S2,要求删除...
  • 使用C++求字符串的所有子串

    千次阅读 2019-05-06 15:30:10
    使用C++求字符串的所有子串,如字符串“abcd”,它的全部子串应该为a,ab,abc,b,bc,bcd,c,cd,d。使用C++编写程序。结果包括原字符串 结果 代码 #include<iostream> #include<string.h> #...
  • std::string::substr() string substr (size_t pos = ...传入的两个参数分别为子开始索引和子串长度。 例: string s = "abcde"; cout<<s.substr(1,3); 结果: bcd 索引1开始的长度为3的子串为"bcd"。 ...
  • 拿到这个题,我们首先想到的是怎样遍历,怎样从头到尾的把所有子串取出来,还有如何消掉其中的符号。首先,遍历的方法想了好久,结果不大理想,代码如下,求改进: public static void main(String[] args) { ...
  • C++ string类取字符串的左右子串(以特定子串为分界限)
  • C++ 求字符串的所有子串

    千次阅读 2019-09-04 17:27:37
    求一个字符串的所有子串的核心就是利用substr这个函数,所以一定要搞懂这个函数。第二个变量是偏移量。 下面是源码: #include<iostream> #include<string> using namespace std; void ...
  • mysql解析json字符串字符串查找,子串截取和字段类型转换相关总结 很多时候,我们需要在sql里面直接解析json字符串。这里针对mysql5.7版本的分水岭进行区分。 1.对于mysql5.7以上版本  使用mysql的内置函数...
  • 截取字符串中子串

    2015-04-19 21:28:45
    在拼sql查询语句时,经常有where条件,有两种方法: 1.select * from dual where 1=1  条件1: (and a = 123) 条件2: ( and b = 456) 这种拼接where条件时最好。 2.  select * from dual... 条件2:(b = 45
  • 比如:字符串 “cu_f”,现在只要”cu”,也就是去掉”_f” std::string str1=”cu_f”; int pos=0; pos=str1.find(“_f”); ///获取”_f”出现的位置 if(-1 == pos) ///pos=-1说明没有找到 “_f” { return; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,682
精华内容 22,272
关键字:

从字符串中取子串