PENULTIMATE WORD解题思路 codeEval

来源:互联网 发布:mac如何显示包内容 编辑:程序博客网 时间:2024/06/06 22:56

这一题不知道有没有更好的办法,我的思路是先把输入的一行单词放到一个vector<string>中,然后输出倒数第二个。

把一行字符串以空格为分界符拆分成一组字符串,我利用了stl中的find_first_of函数,这个函数可以从指定的位置开始搜索指定字符,返回第一个找到的位置。通过find_first_of函数循环搜索到每一个空格,然后把单词拆分出来。

#include <iostream>#include <fstream>#include <vector>#include <string>using namespace std;void split(const string& s, const string& delim, vector<string> &v) {if(s.size() == 0) return;int last = 0;size_t index = s.find_first_of(delim, last);while(index != string::npos) {v.push_back(s.substr(last, index-last));last = index+1;index = s.find_first_of(delim, last);}if(index - last > 0)v.push_back(s.substr(last, index-last));}int main (int argc, char* argv[]) {ifstream file;string lineBuffer;file.open(argv[1]);while (!file.eof()) {getline(file, lineBuffer);if (lineBuffer.length() == 0)continue; //ignore all empty lineselse {vector<string> v;split(lineBuffer, " ", v);if(v.size() >= 2)cout << v[v.size()-2] << endl;}}return 0;}


0 0
原创粉丝点击