程序竞赛中对字符串的简单处理方法

substr()函数用法:

substr(起始位置,长度)

#include<string>
#include<iostream>
using namespace std;
main()
{
	string s("12345asdf");
	string a=s.substr(0,4);    //获得字符串s中 从第0位开始的长度为4的字符串
	cout<<a<<endl;
}


输出结果为:
1234

assign()函数:
函数以下列方式赋值:


用str为字符串赋值, 
用str的开始num个字符为字符串赋值, 
用str的子串为字符串赋值,子串以index索引开始,长度为len 
用num个字符ch为字符串赋值. 
例如以下代码:

#include<string>
#include<iostream>
using namespace std;
main()
{
    string str1, str2 = "War and Peace";
    str1.assign( str2, 4, 3 );        //str2 字符串的第4个字符位置开始赋值给str1,长度为3个字符
    cout << str1 << endl;
}



输出结果为:
and

赋值(assign) 
语法: 
basic_string &assign( const basic_string &str );
basic_string &assign( const char *str );
basic_string &assign( const char *str, size_type num );
basic_string &assign( const basic_string &str, size_type index, size_type len );

basic_string &assign( size_type num, char ch );


 

/*以上为转载..我只是做了一点格式转换*/

 

 

STL map :

http://www.cplusplus.com/reference/map/map/map/

以上C++对map类的文档

map 是一个模板类...用二叉堆对有序数对进行一个排序 ,所以每次查询的复杂度为 log(n);


其定义方式有多种比如 

map<int ,string > m ;

map<string ,int > m;

map<int ,int> m;

map<string , string > m;


int main()
{
	string a = "sad";
	string b = "I am sad";
	map<string,string>m;
	string i = m[a];
	if(i=="")
		cout<<"yes"<<endl;
	m[a] = b;
	cout<<m[a]<<endl;
	return 0;
}


 

 

输出结果为:

yes

I am sad


一般ACM中用上面的这种用法...比较简单易懂 

可以做为一个字符串的引索

注意如果没有引索值的话是 空字符串 或者 空值 (也许是0,有兴趣可以自己研究一下)

sstream 中的 stringstream()

这个就有点强大了...比substring 还要好用一点


 

    string str,sub[105];
    getline(cin,str);    
    stringstream s(str);  
    int cnt=0;  
    while(s>>sub[cnt++]){}  


用上面的方法能把str 分解为单词储存在sub[]里面

 

记住加 #include<sstream>


trie 和 后缀数组的 实现方法我估计这个月会写一下 包括之前没写的KMP 拓展KMP AC自动机 都会稍微接触一下...


加油!

转载于:https://www.cnblogs.com/Felix-F/archive/2013/04/08/3223628.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值