ca33a_demo_c++_新旧代码的兼容char数组与vector_string相互转换
/*ca33a_demo_c++33_CppPrimer_新旧代码的兼容_txwtech
旧代码:数组和c风格字符串
新代码:vector和string
相互转换:
c风格字符串<- ->string
数组<- ->vector
C3867错误。
https://docs.microsoft.com/zh-cn/cpp/error-messages/compiler-errors-2/compiler-error-c3867?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DZH-CN%26k%3Dk(C3867)%26rd%3Dtrue&view=vs-2019
const char *str=st.c_str(); c_str后面的括号不要忘记写上
*/
- /*ca33a_demo_c++33_CppPrimer_新旧代码的兼容_txwtech
- 旧代码:数组和c风格字符串
- 新代码:vector和string
- 相互转换:
- c风格字符串<- ->string
- 数组<- ->vector
- C3867错误。
- https://docs.microsoft.com/zh-cn/cpp/error-messages/compiler-errors-2/compiler-error-c3867?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DZH-CN%26k%3Dk(C3867)%26rd%3Dtrue&view=vs-2019
- const char *str=st.c_str(); c_str后面的括号不要忘记写上
- */
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- int main()
- {
- string st("Hello World");
- st = st + " bill";
- cout <<"c++:string st: "<< st << endl;
- const char *str=st.c_str();//c++转c风格字符串,必须加上const,常字符指针
- cout << "c风格*str: "<<str << endl;
- //getchar();
- const size_t arr_size = ;
- int int_arr[arr_size] = {,,,,,};
- vector<int> ivec(int_arr, int_arr + arr_size);//数组转vector, int_arr默认指针指向第一个,int_arr + arr_size指向最后一个的后面 [ 开区间,保活。 )闭区间不包括。前包后不包
- cout << "间隔ivec:" << endl;
- for (vector<int>::iterator itr = ivec.begin(); itr != ivec.end(); ++itr)
- {
- cout << *itr << endl;
- }
- cout << "间隔ivec2:" << endl;
- vector<int> ivec2(int_arr+,int_arr+);//2,3,4的数据赋值到vector
- for (vector<int>::iterator itr = ivec2.begin(); itr != ivec2.end(); ++itr)
- {
- cout << *itr << endl;
- }
- return ;
- }
- /*ca33b_demo_c++_txwtech
- vector数据放入数组
- */
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- int main()
- {
- vector<int> ivec;
- int ival;
- cout << "Enter number:(Ctrl+Z to end)" << endl;
- while (cin >> ival)
- ivec.push_back(ival);
- int *parr = new int[ivec.size()];//创建动态数组
- size_t ix = ;
- for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter, ++ix)
- parr[ix] = *iter;//vector数据放入数组
- for (ix = ; ix < ivec.size(); ++ix)
- {
- cout <<"vector to 数组" <<*(parr + ix) << endl;
- }
- delete[] parr;
- return ;
- }
/*习题4.34—4.35—c++_txwtech
1.读入一组string数据,放入vector
3.vector字符串->字符指针数组,vector每个字符串--创建新的动态字符数组,
4.vector字符串复制到字符数组
5.字符数组放到动态字符指针数组里面
//cin与getline方法,cin遇到空格就默认一个字符串,getline不识别空格,直到回车,默认一个字符串输入结束
while (getline(cin, str))
svec.push_back(str);
*/
- /*习题4.34—4.35—c++_txwtech
- 1.读入一组string数据,放入vector
- 3.vector字符串->字符指针数组,vector每个字符串--创建新的动态字符数组,
- 4.vector字符串复制到字符数组
- 5.字符数组放到动态字符指针数组里面
- //cin与getline方法,cin遇到空格就默认一个字符串,getline不识别空格,直到回车,默认一个字符串输入结束
- */
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- int main()
- {
- vector<string> svec;
- string str;
- cout << "enter strings: (ctrl+Z) to end" << endl;
- //while (cin >> str) //cin与getline方法,cin遇到空格就默认一个字符串,getline不识别空格,直到回车,默认一个字符串输入结束
- while (getline(cin, str))
- svec.push_back(str);//1
- //创建动态字符指针数组
- //数组里面放的指针
- char **parr = new char*[svec.size()];
- size_t ix= ;
- for (vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter, ++ix)
- {
- char *p = new char[(*iter).size() + ];//*iter指向的是一个字符串//
- strcpy(p,(*iter).c_str());//vector转c风格//
- parr[ix] = p;//动态字符数组赋值给字符指针//
- }
- cout << "content of vector: " << endl;
- for (vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter)
- {
- cout << *iter << endl;
- }
- cout << "Content of charactor arrays: " << endl;
- for (ix = ; ix != svec.size(); ++ix)
- {
- cout << parr[ix] << endl;
- }
- //每个指针delete
- for (ix = ; ix != svec.size(); ++ix)
- {
- delete parr[ix];
- }
- delete[] parr;
- //getchar();
- return ;
- }
ca33a_demo_c++_新旧代码的兼容char数组与vector_string相互转换的更多相关文章
- Javascript Jquery 中的数组定义与操作_子木玲_新浪博客
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 新旧图号(图幅号)转换/计算/检查,经纬度转换计算,C#代码
图号(图幅号):地图图号是指为便于使用和管理,按照一定方法将各分幅地图进行的编号. 经常用到图号,但是在网上一直没有找到一个完整的图号转换程序,因此自己写了一个图号处理的库,分享出来.如有错误请指正. ...
- Flex布局新旧混合写法详解(兼容微信)
原文链接:https://www.usblog.cc/blog/post/justzhl/Flex布局新旧混合写法详解(兼容微信) flex是个非常好用的属性,如果说有什么可以完全代替 float 和 ...
- css弹性盒子新旧兼容
前言:本篇随笔是对弹性盒子有了解的人来写的这篇文章,具体属性产生的效果这里不做说明,基础的东西去查文档.这里只是总结. 时至今日,css3的flex弹性盒子在移动端基本上都是支持的,但不排除有些些低版 ...
- Flex 布局新旧混合写法详解(兼容微信)
flex 是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 flex 的支持都 ...
- 使用Flexbox:新旧语法混用实现最佳浏览器兼容
Flexbox非常的棒,肯定是未来布局的一种主流.在过去的几年这之中,语法改变了不少,这里有一篇“旧”和“新”新的语法区别教程(如果你对英文不太感兴趣,可以移步阅读中文版本).但是,如果我们把Flex ...
- JavaScript 兼容新旧版chrome和firefox的桌面通知
1.新/旧版本的chrome和firefox都可支持,IE下不支持因此设置为了在最小化窗口处闪烁显示提示文字. 2.设置为提示窗口显示5秒即关闭. 3.可设置图标和点击提示窗口要跳转到的页面(见输入参 ...
- Android技巧小结之新旧版本Notification
最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...
- [实用指南]如何使您的旧代码库(遗留代码)符合MISRA C 2012编码规范?
重用旧代码是现实,但是在安全关键型软件项目中重用旧代码并实现MISRA C 2012的完全合规性是艰巨的任务. 最初的MISRA原则是为了在开发代码时应用而创建的,即使文档本身也有警告: " ...
随机推荐
- vue 上拉刷新组件
背景,项目中经常会出现需要上拉加载更多或者下拉刷新的需求,一直以来呢都是借用各种UI库来实现,但是不知道啥情况,最近在使用的时候,一直有问题,出不了效果,然人很恼火,于是只能自己动手来实现以下, 这次 ...
- [nginx报错问题]reload时报错:nginx: [error] invalid PID number "" in ...
错误 第一次探索nginx,执行以下命令时: nginx -s reload 报出错误: nginx: [error] invalid PID number "" in ... * ...
- Java获取主板序列号、MAC地址、CPU序列号工具类
import java.io.File; import java.io.FileWriter; import java.io.BufferedReader; import java.io.IOExce ...
- springboot 启动报错"No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available"
1.问题 springboot启动报错 "D:\Program Files\Java\jdk-11\bin\java.exe" -XX:TieredStopAtLevel=1 -n ...
- sqlmap tamper脚本备忘录与tamper脚本编写
查看sqlmap全部脚本 $ python sqlmap.py --list-tampers 使用方法 --tamper=TAMPER 2019.9更新后翻译 * apostrophemask.py- ...
- 网络编程TCP/IP详解
网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...
- Rocket - tilelink - Parameters
https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ 简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析). ...
- Shell脚本 (一) 概述、解析器、脚本入门
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一. Shell 脚本概述 1. Shell 的 含义: Shell 是一个用C语言编写的程序,它是用户 ...
- Java实现 LeetCode 762 二进制表示中质数个计算置位(位运算+JDK的方法)
762. 二进制表示中质数个计算置位 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数. (注意,计算置位代表二进制表示中1的个数.例如 21 的二进制表示 ...
- Java实现 LeetCode 316 去除重复字母
316. 去除重复字母 给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次.需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置). 示例 1: 输入: " ...