/*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相互转换的更多相关文章

  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展开过度动画

    有一段时间没用vue动画了,就忘了,又仔细去看了vue官网 的过渡&动画,记录下来方便快速使用 (可以多看vue官网 过渡&动画 实现更多效果) 1.实际效果 展开收起效果.gif 2 ...

  2. jupyter notebook 安装扩展nbextensions

    安装nbextensions可提高jupyter notebook效率,安装步骤如下: 1.pip 方式安装: (gluon) [root@localhost ~]# pip install jupy ...

  3. Rocket - diplomacy - TransferSizes

    https://mp.weixin.qq.com/s/Sf0owQxWzxacVvykJZ5oTQ   介绍TransferSizes的实现.   ​​   1. 基本定义   从min到max的闭合 ...

  4. Rocket - diplomacy - LazyModule的实例化

    https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  5. ROS入门笔记(二):ROS安装与环境配置及卸载(重点)

    ROS入门笔记(二):ROS安装与环境配置及卸载(重点) [TOC] 1 ROS安装步骤 1.1 ROS版本 ROS目前只支持在Linux系统上安装部署, 它的首选开发平台是Ubuntu. 发布时间 ...

  6. Java实现 LeetCode 338 比特位计数

    338. 比特位计数 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1 ...

  7. Java实现 LeetCode 89 格雷编码

    89. 格雷编码 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 0 开头. 示例 1: 输 ...

  8. Java实现蓝桥杯勾股定理

    勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形. 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数. 求满足这个条件的不同直角三角形的个数. [数据格式] 输入一 ...

  9. java实现第四届蓝桥杯大臣的旅费

    大臣的旅费 题目描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大 ...

  10. ASP.NET Core Blazor Webassembly 之 路由

    web最精妙的设计就是通过url把多个页面串联起来,并且可以互相跳转.我们开发系统的时候总是需要使用路由来实现页面间的跳转.传统的web开发主要是使用a标签或者是服务端redirect来跳转.那今天来 ...