第 33课 C++中的字符串(下)
字符串与数字转换
-标准库中提供了相关的类对字符串和数字进行转换
-字符串流类(sstream)用于string的转换
.<sstream>-相关头文件
.istringstream-字符串输入流
.ostringstream-字符串输出流
使用方法
-string-->数字
istringstream iss("123.45");
double num;
iss >> num
数字--->string
ostringstream oss;
oss << 543.21
string s = oss.str();
字符串和数字的转换
#include <iostream>
#include <string>
#include <sstream>
using namespace std; int main()
{
istringstream iss("123.45");
double num;
//iss >> num; //重载 >> 有返回值,返回值是一个bool类型
if(iss >> num)
{
cout << num <<endl;
} ostringstream oss;
//oss << 543.21; //这个地方也有返回值,返回值就是oss对象本身。如何证明呢?
oss << << '.' << ;
string s = oss.str();
cout << s <<endl; return ;
}
#include <iostream>
#include <string>
#include <sstream>
using namespace std; //这个程序不够完美,为什么?因为函数的参数为double类型,那么int类型的呢?需要将这个函数再写一遍吗,这样可以,但是就是
//在造轮子。目前我们还无法使用更高级的用法,比如说模板技术。但是在这里可以通过使用C语言中的宏实现。 #if 1
#define TO_NUMBER(s,n) (istringstream(s) >> n) //这个地方就是利用前面学过的调用构造函数产生临时对象,临时对象的生命周期只在这一条语句中。
#define TO_STRING(n) (((ostringstream&)(ostringstream() << n)).str())
#else
bool to_number(const string& s, double &n)
{
istringstream ss(s); return ss >> n;
} string to_string(double n)
{
return ((ostringstream&)(ostringstream() << n)).str();
}
#endif
int main()
{
double n;
if(TO_NUMBER("123.45",n))
{
cout << n <<endl;
} string s = TO_STRING(2.1345);
cout << s <<endl; return ;
}
字符串右移
-示例:
. abcdefg循环右移3位后得到efgabcd
#include <iostream>
#include <string> using namespace std; string right_func(const string& s, unsigned int n)
{
string ret = "";
unsigned int pos = ; n = n % s.length();
pos = s.length() - n;
ret = s.substr(pos);
ret += s.substr(, pos); return ret;
} int main()
{
string s = "abcdefg";
string r = right_func(s,); cout << r << endl; return ;
}
这种写法就非常简练,不像C语言中,有指针在移动。但是我感觉还不够酷炫,我直接重载 >> 这个操作符。
#include <iostream>
#include <string> using namespace std; string operator >> (const string& s, unsigned int n)
{
string ret = "";
unsigned int pos = ; n = n % s.length();
pos = s.length() - n;
ret = s.substr(pos);
ret += s.substr(, pos); return ret;
} int main()
{
string s = "abcdefg";
string r = s >> ; cout << r << endl; return ;
}
第 33课 C++中的字符串(下)的更多相关文章
- 第33课 C++中的字符串类
在C语言中学习字符串时,我们使用的是字符数组的概念. C语言中没有真正意义的字符串.为了表达字符串的概念,我们使用了字符数组来模拟字符串. 在应用程序开发中,我们需要大量的处理字符串,如果还用C语言中 ...
- 第 33课 C++中的字符串(上)
历史的遗留问题在C语言中没有真正意义上的字符串,为了表达字符串这个概念利用字符数组来模拟字符串.C语言不支持真正意义上的字符串 (C++也不支持)C语言用字符数组和一组函数实现字符串操作 (C++中同 ...
- 第33课 C++中的字符串
1. 历史遗留问题及解决方案 (1)历史遗留问题 ①C语言不支持真正意义上的字符串------c语言是用字符数组实现字符串 ②C语言用字符数组和一组函数模拟字符串操作 ③C语言不支持自定义类型,因此无 ...
- 第11课 Qt中的字符串类
1. 历史遗留问题和解决方案 (1)历史遗留问题 ①C语言不支持真正意义上的字符串 ②C语言用字符数组和一组函数实现字符串操作 ③C语言不支持自定义类型,因此无法获得字符串类型 (2)解决方案 ①从C ...
- Springboot 之 自定义配置文件及读取配置文件注意:配置文件中的字符串不要有下划线 .配置中 key不能带下划线,value可以(下划线的坑,坑了我两天..特此纪念)
注意:配置文件中的字符串不要有下划线 .配置中 key不能带下划线,value可以 错误的.不能读取的例子: mySet .ABAP_AS_POOLED = ABAP_AS_WITH_P ...
- SQL点滴33—SQL中的字符串操作
原文:SQL点滴33-SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...
- json字符串中key值下划线命名转换为驼峰命名
json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info ...
- 第18课 - make 中的路径搜索(下)
第18课 - make 中的路径搜索(下) 1. 问题一 当 VPATH 和 vpath 同时出现,make 会如何处理? 工程项目的目录结构如下图所示,src1 和 src2 中都包含了 func. ...
- [Spark内核] 第33课:Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕
本課主題 Spark Executor 工作原理图 ExecutorBackend 注册源码鉴赏和 Executor 实例化内幕 Executor 具体是如何工作的 [引言部份:你希望读者看完这篇博客 ...
随机推荐
- 如何在Pycharm中添加新的模块
在使用Pycharm编写程序时,我们时常需要调用某些模块,但有些模块事先是没有的,我们需要把模块添加上去. 最近在学习爬虫,写了下面几行代码: 结果出现错误 错误ModuleNotFoundError ...
- python copy和deepcopy
Python FAQ2:赋值.浅拷贝.深拷贝的区别? 发表于 2014-08-15 | 分类于 Lang.-Python | 在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷 ...
- git使用遇到问题1
1.上传代码过程中遇到 git help gc错误解决方法,有两种方式,推荐第一种方式. $ git fsck $ git gc --prune=now 如果执行完上面的命令还是不行的话,可以尝试删掉 ...
- PyCharm工具配置和快捷键使用
PyCharm是一款高效开发Python程序的IDE,包含有自动联想.语法高亮.代码调试.管理多个版本Python解释器等功能.本文主要描述Python界面个性化定制方法(字体.颜色配置).常用配置和 ...
- Note | Ubuntu18.04安装与配置
目标: 在服务器上配置最新的Ubuntu稳定版本18.04 LTS.18.04比16.04好看很多,非常建议. 有3块硬盘:2块4TB机械硬盘,1块2TB固态硬盘.计划将固态硬盘作为主硬盘,其余两块机 ...
- JDK的小Bug你了解么?
用了这么长时间的JDK了,有没有老铁发现JDK的bug呢?从最早版本的JDK1.2到现在普及开的JDK1.8以来,JAVA经历了这么多年的风风雨雨,依然坚持在一线上,是不是感觉很神奇,但是,有没有多 ...
- golang module 在 spacemcs 中的配置
概述 golang 官方的包管理从 1.11 版本就开始支持了, 之前尝试了几次, 效果都不理想, 就一直用 dep 来管理 package. 最近 1.13 版本发布了, 使用 go module ...
- 被“org.springframework.boot.web.support.SpringBootServletInitializer;”耽搁的两天
org.springframework.boot.web.support.SpringBootServletInitializer 改为: org.springframework.boot.conte ...
- HBuilder webApp开发(七)微信/QQ/新浪/腾讯微博分享
链接 https://blog.csdn.net/zhuming3834/article/details/51706256
- Kubernetes 弹性伸缩全场景解析(三) - HPA 实践手册
在上一篇文章中,给大家介绍和剖析了 HPA 的实现原理以及演进的思路与历程.本文我们将会为大家讲解如何使用 HPA 以及一些需要注意的细节. autoscaling/v1 实践 v1 的模板可能是大家 ...