/*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后面的括号不要忘记写上

*/

  1. /*ca33a_demo_c++33_CppPrimer_新旧代码的兼容_txwtech
  2. 旧代码:数组和c风格字符串
  3. 新代码:vector和string
  4. 相互转换:
  5. c风格字符串<- ->string
  6. 数组<- ->vector
  7.  
  8. C3867错误。
  9. 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
  10. const char *str=st.c_str(); c_str后面的括号不要忘记写上
  11.  
  12. */
  13.  
  14. #include <iostream>
  15. #include <string>
  16. #include <vector>
  17. using namespace std;
  18.  
  19. int main()
  20. {
  21. string st("Hello World");
  22. st = st + " bill";
  23. cout <<"c++:string st: "<< st << endl;
  24.  
  25. const char *str=st.c_str();//c++转c风格字符串,必须加上const,常字符指针
  26. cout << "c风格*str: "<<str << endl;
  27. //getchar();
  28. const size_t arr_size = ;
  29. int int_arr[arr_size] = {,,,,,};
  30. vector<int> ivec(int_arr, int_arr + arr_size);//数组转vector, int_arr默认指针指向第一个,int_arr + arr_size指向最后一个的后面 [ 开区间,保活。 )闭区间不包括。前包后不包
  31. cout << "间隔ivec:" << endl;
  32. for (vector<int>::iterator itr = ivec.begin(); itr != ivec.end(); ++itr)
  33. {
  34. cout << *itr << endl;
  35. }
  36. cout << "间隔ivec2:" << endl;
  37. vector<int> ivec2(int_arr+,int_arr+);//2,3,4的数据赋值到vector
  38. for (vector<int>::iterator itr = ivec2.begin(); itr != ivec2.end(); ++itr)
  39. {
  40. cout << *itr << endl;
  41. }
  42.  
  43. return ;
  44. }
  1. /*ca33b_demo_c++_txwtech
  2. vector数据放入数组
  3. */
  4. #include <iostream>
  5. #include <string>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12. vector<int> ivec;
  13. int ival;
  14.  
  15. cout << "Enter number:(Ctrl+Z to end)" << endl;
  16. while (cin >> ival)
  17. ivec.push_back(ival);
  18.  
  19. int *parr = new int[ivec.size()];//创建动态数组
  20. size_t ix = ;
  21. for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter, ++ix)
  22. parr[ix] = *iter;//vector数据放入数组
  23. for (ix = ; ix < ivec.size(); ++ix)
  24. {
  25. cout <<"vector to 数组" <<*(parr + ix) << endl;
  26. }
  27. delete[] parr;
  28. return ;
  29. }

/*习题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);
*/

  1. /*习题4.34—4.35—c++_txwtech
  2. 1.读入一组string数据,放入vector
  3. 3.vector字符串->字符指针数组,vector每个字符串--创建新的动态字符数组,
  4. 4.vector字符串复制到字符数组
  5. 5.字符数组放到动态字符指针数组里面
  6. //cin与getline方法,cin遇到空格就默认一个字符串,getline不识别空格,直到回车,默认一个字符串输入结束
  7. */
  8. #define _CRT_SECURE_NO_WARNINGS
  9. #include <iostream>
  10. #include <string>
  11. #include <vector>
  12.  
  13. using namespace std;
  14.  
  15. int main()
  16. {
  17. vector<string> svec;
  18. string str;
  19. cout << "enter strings: (ctrl+Z) to end" << endl;
  20. //while (cin >> str) //cin与getline方法,cin遇到空格就默认一个字符串,getline不识别空格,直到回车,默认一个字符串输入结束
  21. while (getline(cin, str))
  22. svec.push_back(str);//1
  23. //创建动态字符指针数组
  24. //数组里面放的指针
  25. char **parr = new char*[svec.size()];
  26.  
  27. size_t ix= ;
  28. for (vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter, ++ix)
  29. {
  30. char *p = new char[(*iter).size() + ];//*iter指向的是一个字符串//
  31. strcpy(p,(*iter).c_str());//vector转c风格//
  32. parr[ix] = p;//动态字符数组赋值给字符指针//
  33. }
  34. cout << "content of vector: " << endl;
  35. for (vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter)
  36. {
  37. cout << *iter << endl;
  38. }
  39. cout << "Content of charactor arrays: " << endl;
  40. for (ix = ; ix != svec.size(); ++ix)
  41. {
  42. cout << parr[ix] << endl;
  43. }
  44. //每个指针delete
  45. for (ix = ; ix != svec.size(); ++ix)
  46. {
  47. delete parr[ix];
  48. }
  49. delete[] parr;
  50.  
  51. //getchar();
  52. return ;
  53. }

ca33a_demo_c++_新旧代码的兼容char数组与vector_string相互转换的更多相关文章

  1. Javascript Jquery 中的数组定义与操作_子木玲_新浪博客

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  2. 新旧图号(图幅号)转换/计算/检查,经纬度转换计算,C#代码

    图号(图幅号):地图图号是指为便于使用和管理,按照一定方法将各分幅地图进行的编号. 经常用到图号,但是在网上一直没有找到一个完整的图号转换程序,因此自己写了一个图号处理的库,分享出来.如有错误请指正. ...

  3. Flex布局新旧混合写法详解(兼容微信)

    原文链接:https://www.usblog.cc/blog/post/justzhl/Flex布局新旧混合写法详解(兼容微信) flex是个非常好用的属性,如果说有什么可以完全代替 float 和 ...

  4. css弹性盒子新旧兼容

    前言:本篇随笔是对弹性盒子有了解的人来写的这篇文章,具体属性产生的效果这里不做说明,基础的东西去查文档.这里只是总结. 时至今日,css3的flex弹性盒子在移动端基本上都是支持的,但不排除有些些低版 ...

  5. Flex 布局新旧混合写法详解(兼容微信)

    flex 是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 flex 的支持都 ...

  6. 使用Flexbox:新旧语法混用实现最佳浏览器兼容

    Flexbox非常的棒,肯定是未来布局的一种主流.在过去的几年这之中,语法改变了不少,这里有一篇“旧”和“新”新的语法区别教程(如果你对英文不太感兴趣,可以移步阅读中文版本).但是,如果我们把Flex ...

  7. JavaScript 兼容新旧版chrome和firefox的桌面通知

    1.新/旧版本的chrome和firefox都可支持,IE下不支持因此设置为了在最小化窗口处闪烁显示提示文字. 2.设置为提示窗口显示5秒即关闭. 3.可设置图标和点击提示窗口要跳转到的页面(见输入参 ...

  8. Android技巧小结之新旧版本Notification

    最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...

  9. [实用指南]如何使您的旧代码库(遗留代码)符合MISRA C 2012编码规范?

    重用旧代码是现实,但是在安全关键型软件项目中重用旧代码并实现MISRA C 2012的完全合规性是艰巨的任务. 最初的MISRA原则是为了在开发代码时应用而创建的,即使文档本身也有警告: " ...

随机推荐

  1. vue 上拉刷新组件

    背景,项目中经常会出现需要上拉加载更多或者下拉刷新的需求,一直以来呢都是借用各种UI库来实现,但是不知道啥情况,最近在使用的时候,一直有问题,出不了效果,然人很恼火,于是只能自己动手来实现以下, 这次 ...

  2. [nginx报错问题]reload时报错:nginx: [error] invalid PID number "" in ...

    错误 第一次探索nginx,执行以下命令时: nginx -s reload 报出错误: nginx: [error] invalid PID number "" in ... * ...

  3. Java获取主板序列号、MAC地址、CPU序列号工具类

    import java.io.File; import java.io.FileWriter; import java.io.BufferedReader; import java.io.IOExce ...

  4. 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 ...

  5. sqlmap tamper脚本备忘录与tamper脚本编写

    查看sqlmap全部脚本 $ python sqlmap.py --list-tampers 使用方法 --tamper=TAMPER 2019.9更新后翻译 * apostrophemask.py- ...

  6. 网络编程TCP/IP详解

    网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...

  7. Rocket - tilelink - Parameters

    https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ   简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析).   ​​   ...

  8. Shell脚本 (一) 概述、解析器、脚本入门

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一. Shell 脚本概述 1. Shell 的 含义: Shell 是一个用C语言编写的程序,它是用户 ...

  9. Java实现 LeetCode 762 二进制表示中质数个计算置位(位运算+JDK的方法)

    762. 二进制表示中质数个计算置位 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数. (注意,计算置位代表二进制表示中1的个数.例如 21 的二进制表示 ...

  10. Java实现 LeetCode 316 去除重复字母

    316. 去除重复字母 给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次.需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置). 示例 1: 输入: " ...