python的split确实是很香的功能。
写c++的时候,就会想着,要是能直接input().split()那不挺好。

实际上真的可以:自己动手,丰衣足食。

先放成品展示。

int main(){auto k=input().split();//k的类型是vector<string>cout<<k<<endl;
}


完整代码在文章末尾。

1.首先,写一个input()不难,getline+return就行

mystring input(string c=""){cout<<c;mystring s;getline(cin,s);return s;
}

为什么是mystring呢?因为我们想要实现input().split()的效果。普通的string不能胜任,所以自己构造一个mystring的类(具体往下看)

#本文作者XXOY

2.写一个split()函数。
考虑到便捷性,直接把它写成成员函数。
这个mystring类就继承string类。写成class mystring:public string也行。

用struct主要是应为加入的成员函数都是public。

实现部分就爆扫过去,扫到ch(默认空格)就记录位置,然后插入到一个vector<string>里

struct mystring:string{//继承string类,写成class mystring:public string也行mystring() :string() {}mystring& operator=(const string &c) { (*this).assign(c);return *this;}vector<string> split(char c=' '){vector<string> x;int last=0,len=0;for(int i=0;i<size();++i){if(at(i)==c){x.push_back(substr(last,len));last=i+1;len=0;}else{len++;}}if(last<size())x.push_back(substr(last,len));return x;}
}s;

其实更简洁与接近python的是使用find,但时间复杂度都是O(n),写好了我也不想改了。

#本文作者XXOY

3.OK!
我们就可以直接

auto k=input().split();

用auto是因为简单,也可以写成vector<string> k;

4.加一个输出函数
由于c++不能直接打印vector,所以我们自己写一个重载。
具体的写法下次再教(可以关注我),这次先放个例子。

template<typename T>
ostream& operator<<(ostream &o,vector<T> &x){char ch=0;if(typeid(T)==typeid(string)) ch='\'';o<<"["<<ch<<x[0]<<ch;for(int i=1;i<x.size();++i){o<<", "<<ch<<x[i]<<ch;}o<<"]";return o;
}

还加入了string的特判,加一个‘,更接近python。

OK,完毕,下面是完整代码

#include<bits/stdc++.h>
using namespace std;struct mystring:string{//继承string类 mystring() :string() {}mystring& operator=(const string &c) { (*this).assign(c);return *this;}vector<string> split(char c=' '){vector<string> x;int last=0,len=0;for(int i=0;i<size();++i)if(at(i)==c){x.push_back(substr(last,len));last=i+1,len=0;}else ++len;if(last<size())x.push_back(substr(last,len));return x;}
}s;template<typename T>
ostream& operator<<(ostream &o,vector<T> &x){char ch=0;if(typeid(T)==typeid(string)) ch='\'';o<<"["<<ch<<x[0]<<ch;for(int i=1;i<x.size();++i){o<<", "<<ch<<x[i]<<ch;}o<<"]";return o;
}mystring input(string c=""){cout<<c;mystring s;getline(cin,s);return s;
}int main()
{auto k=input().split();//k的类型是vector<string>cout<<k<<endl;
}//本文作者XXOY

这就是input()、split() 的全部内容了。
我还写了比如类似python map一样,转换列表(vector)的东西,将和那个cout<<vector一起,分成两篇来讲。
比如这样

    auto c=my_map(my_int,k);//k是vector<string>cout<<c;

后续请看我主页(应该能咕完)。

我是XXOY,我们下次再见。

给c++写python的split()与input()【python一样写c++、一】相关推荐

  1. python中split的用法-python中的split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

  2. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况(split、zip...)

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...

  3. python写游戏棋牌游戏_使用python实现简单五子棋游戏

    使用python实现简单五子棋游戏 发布时间:2020-08-29 06:12:30 来源:脚本之家 阅读:73 作者:weixin_42874933 用python实现五子棋简单人机模式的练习过程, ...

  4. python写一个ssh工具_用Python写个自动ssh登录远程服务器的小工具

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...

  5. python 一行写多条件用分割,关于python,你必须知道这25例python专属骚技巧

    本文我总结了25个python专属骚操作,实属提高效率/同事吹牛只利器,确定不收藏吗? image.png 一.原地交换 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法 x, y ...

  6. python伪造邮件发件地址_python写一个邮箱伪造脚本

    前言: 原本打算学php MVC的思路然后写一个项目.但是贼恶心, 写不出来.然后就还是用python写了个邮箱伪造. 0x01 第一步先去搜狐注册一个邮箱 然后,点开设置,开启SMTP服务. 当然你 ...

  7. python中split的用法取第二个分片_python中split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

  8. python写一个表白程序_用Python写一个能算出自己年龄的小程序

    用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...

  9. python怎么编写重复程序,python重复执行怎么写

    python如何用for循环控制多次执行一个自定义函数? 首先我定义一个取随机数的函数: import random def R(): print random #脚本里面直接这样写就好了import ...

最新文章

  1. 不焦虑、不内卷能拿图灵奖吗?来自智源研究院的灵魂拷问
  2. 使用 XML 实现 REST 式的 SOA
  3. 扒一扒.NET Core的环境配置提供程序
  4. java中的祖先类_Java程序公共祖先类-Object
  5. mybatis mapper配置 bigint_Mybatis-Plus入门
  6. java 时间转为毫秒数_疫情期间面试总结一(java基础方面)
  7. 圆柱属于能滚动的物体吗_小班科学领域详细教案:会滚动的物体
  8. 商业智能BI如何推进制造业转型
  9. 一次Linux驱动升级的问题记录
  10. 斐讯K2路由器,版本号V22.6.507.43(最新)刷华硕固件简明教程(附所有工具包)
  11. i511260h参数 i5 11260h评测
  12. VS2019:添加现有项目 / 现有cpp文件
  13. 资源管理器计算机目录,资源管理器可以以什么方式显示计算机内所有文件的详细图表...
  14. 2018 BACS Regional Programming Contest F. Football Free Kick(map离散化)
  15. java毕业设计成品源码网站基于javaWeb停车场车辆管理系统的设计与实现|车位
  16. 春夏秋冬又一春之Redis持久化
  17. 一颗小行星掠过地球附近
  18. 码农分为两类:看过《数学之美》的与没看过的
  19. 当敦煌月牙泉遍布Wi-Fi:一个“新型智慧城市”打开方式是这样的
  20. PS入门(1-2) 灰度色彩模式

热门文章

  1. XMind之乱世三国
  2. 一个华为女员工的真实生活
  3. 七夕夜、离别,涵情经河岸
  4. 基于人脸表情的情绪识别
  5. 用python画图片_用 Python 画漂亮的专业插图 ?So easy!
  6. paddlenlp文本摘要模型实现
  7. 大服务器实装维护公告,官博:大服务器实装维护公告(4月16日)
  8. android xml编码格式,android 解析gbk编码格式的网络xml文件
  9. 微信为什么不支持android4,安卓手机微信为啥不能发语音
  10. 分享微信小程序资讯类仿LOL盒子开发