[Accelerated c++读书笔记] 读入一行,拆分每个word。
来源:互联网 发布:java 通讯协议 编辑:程序博客网 时间:2024/05/29 19:49
很多C++书籍都鼓励我们使用vector替换数组,使用string替换传统的字符串,我一直相信可以这么做,而且这么做了以后,会减少工作量,提高效率。知道是一回事,实际操作起来是一回事,每次使用string的时候总会有这样那样的问题。我在想,之所以Accelerated c++这本书这么有名,或许就是因为作者直接教我们用C++的方式思考,这本书只看了一小部分,但是有个例子很能说明问题——作者教我们如何以C++的方式思考。
下面的两个程序都是实现相同的功能,读入一行,如后将该句子里的单词拆分出来。
程序1:
#include<iostream>#include<vector>#include<cctype>#include<string>using namespace std;vector<string>split(const string&s){vector<string> ret;typedef string::size_type string_size;string_size i = 0;while( i != s.size() ){while( i != s.size() && isspace(s[i]))++i;string_size j =i;while( j != s.size() && ! isspace( s[j]))++j;if( i != j){ret.push_back( s.substr(i,j - 1 ));i = j;}}return ret;}int main(){string str;getline( cin, str);vector<string> vec = split( str );cout << " vec.size() = " << vec.size() << endl;cout << str << endl;return 0;}
程序2(纯C++实现):
#include<iostream>#include<vector>#include<cctype>#include<string>#include<algorithm>using namespace std;bool space( char c){return isspace(c);}bool not_space( char c){return !isspace(c);}vector<string> split( const string& str){typedef string::const_iterator iter;vector<string> ret;iter i = str.begin();while( i != str.end()){i = find_if( i , str.end(), not_space);iter j = find_if( i, str.end(), space);if ( i != str.end() )ret.push_back( string( i,j ));i = j;}return ret;}int main(){string str;getline( cin, str);vector<string> vec = split( str );cout << "vec.size() = " << vec.size() << endl; cout << str << endl;return 0; }
书上还有一个例子很好,可以用来考察一个是否很熟悉STL,用一行代码来判断一个字符串是不是回文:
#include<iostream>#include<algorithm>#include<string>using namespace std;int main(){string str;cin >> str; //核心代码就这么一行if( equal( str.begin(), str.end(), str.rbegin()) ){cout << str << " is a plaindrome " << endl;}else{cout << str << " is not a plaindrome " << endl;}return 0;}
- [Accelerated c++读书笔记] 读入一行,拆分每个word。
- 【Accelerated C++】读书笔记(一)
- 【Accelerated C++】读书笔记(二)
- 【Accelerated C++】读书笔记(三)
- 【Accelerated C++】读书笔记(四)
- 【Accelerated C++】读书笔记(五)
- 【Accelerated C++】读书笔记(六)
- 【C++】读入一行
- C/C++ 读入一行字符串
- 【C++】【格式】c++ 如何读入一行字符串
- 参数2字段按逗号拆分,拆分后每个单词对应一行
- 读入一个句子,把所有词都变成大写,输出,每个词占一行
- c/c++ 读入一行不确定个数的整数
- c/c++ 读入一行不确定个数的整数
- C程序读入一组文本行,打印最长的一行。
- 读入一行数据,按
- 读书笔记 · Accelerated C++ 一
- 读《Accelerated C++》有感
- 冒泡排序
- Linux proc详解
- 我的第一篇博客——开始我的程序学习之旅
- Ubuntu9.10下安装配置tftp服务器
- Ubuntu安装Tenda W311P 无线PCI网卡(转)
- [Accelerated c++读书笔记] 读入一行,拆分每个word。
- 解决Godaddy域名解析故障
- ubuntu9.10下安装配置NFS服务
- How to use 'SetItemData()' and 'GetItemData()'?
- Linux开机自动运行程序
- linux中bin和sbin目录的主要区别
- 检测iphone设备是否越狱
- Robot Framework 安装及使用指南
- Linux下网络配置总结、