c++中c_str()的用法示例
//标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组 //主要介绍c_str //c_str():生成一个const char*指针,指向以空字符终止的数组。 //这个数组应该是string类内部的数组 #include <iostream> //需要包含cstring的字符串 #include <cstring> using namespace std; int main() { //string-->char* //c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同 //这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。 //因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中 const char *c; string s = "1234"; c = s.c_str(); cout<<c<<endl; s = "abcde"; cout<<c<<endl; }
结果是:
上面如果继续用c指针的话,导致的错误将是不可想象的。就如:1234变为abcde
其实上面的c = s.c_str(); 不是一个好习惯。既然c指针指向的内容容易失效,我们就应该按照上面的方法,那怎么把数据复制出来呢?这就要用到strcpy等函数(推荐)。
以上就是c++中c_str()的用法示例的详细内容,更多关于c++ c_str()的资料请关注我们其它相关文章!
相关推荐
-
c++中string类成员函数c_str()的用法
1.string类成员函数c_str()的原型: const char *c_str()const;//返回一个以null终止的c字符串 2.c_str()函数返回一个指向正规c字符串的指针,内容和string类的本身对象是一样的,通过string类的c_str()函数能够把string对象转换成c中的字符串的样式; 3.操作c_str()函数的返回值时,只能使用c字符串的操作函数,如:strcpy()等函数.因为,string对象可能在使用后被析构函数释放掉,那么你所指向的内容就具有不确定性.
-
C++求最大公约数四种方法解析
C++求最大公约数的四种方法思路,供大家参考,具体内容如下 将最近学的求最大公约数的四种方法总结如下: 第一种:穷举法之一 解释:拿其中一个数出来,用一个临时变量(tem)保存,每次都把那两个数除以这个临时变量.如果能除断,直接返回tem:如果不能除断,tem- -,直到都能除断,再返回tem.tem就是它们的最大公约数. #include <iostream> using namespace std; int CommFactor1(int m, int n); //函数的声明 int ma
-
详解C++中的自动存储
C++有3种管理数据内存的方式即自动存储(栈存储).静态存储和动态存储(堆存储).在不同的方式下,内存的分配形式和存在时间的长短都不同. 下面对自动存储进行说明. 自动存储(栈存储) 对于函数的形参.内部声明的变量及结构变量等,编译器将在函数执行时为形参自动分配存储空间,在执行到变量和结构变量等的声明语句时为其自动分配存储空间,因此称其为自动变量(Automatic Variable),有的教科书也称其为局部变量,在函数执行完毕返回时,这些变量将被撤销,对应的内存空间将被释放. 事实上,自动变量
-
vscode 配置 C/C++编译环境(完整教程)
第一步:下载安装 下载MinGW-W64 GCC-8.1.0编译器(32和64版本都有) MinGW-W64 GCC下载地址:https://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/installer/mingw-w64-install.exe 离线下载地址:https://sourceforge.net/projects/mingw-w64
-
详解C++ cin.getline函数
cin 虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些需要注意的问题. 当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格.制表符或换行符).一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取. 例: // This program illustrates a problem that can occur if // cin is used to read character data into a string object
-
浅谈C++ 虚函数
缘起 在上一篇文章中,测试代码2 中的 pBaseA->AA(); 输出的内容很"奇怪".其实,完全在情理之中.本文将简单探究一下 c++ 中的虚函数实现机制.本文主要基于 vs2013 生成的 32 位代码进行研究,相信其它编译器(比如,gcc)的实现大同小异. 先从对象大小开始 假设我们有如下代码,假设 int 占 4 字节,指针占 4 字节. #include "stdafx.h" #include "stdlib.h" #inclu
-
c++ 有趣的动态转换
缘起 最近,在项目代码中看到一个非常神奇的类型转换-- 类型A 的指针居然能动态转换成另外一个完全没有任何关系的类指针.这-- 完全颠覆了我的认知. 为了进一步了解这个神奇的操作,我特意模拟了项目代码中的情形,一起来看看吧. 代码简介 BaseA 和 BaseB 是两个基类,NewA 继承自 BaseA,NewB 继承自 BaseB.TestB() 会在堆上 new 一个 NewB 的对象,但是会强制转换成 BaseA 类型的指针并返回(这个操作太逆天,大家一定不要在项目代码中这么玩儿).mai
-
详解C++之C++11的牛逼特性
一.列表初始化 1.1 C++98中,标准允许使用花括号{}对数组元素进行统一的列表初始值设定. int array1[] = {1,2,3,4,5}; int array2[] = {0}; 对对于一些自定义类型,却不行. vector<int> v{1,2,3,4,5}; 在C++98中这样无法通过编译,因此需要定义vector之后,在使用循环进行初始赋值. C++11扩大了用初始化列表的使用范围,让其适用于所有的内置类型和自定义类型,而且使用时,=可以不写 // 内置类型 int x1
-
c++中c_str()的用法示例
//标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组 //主要介绍c_str //c_str():生成一个const char*指针,指向以空字符终止的数组. //这个数组应该是string类内部的数组 #include <iostream> //需要包含cstring的字符串 #include <cstring> using namespace std; int main() { //string-->char* //c_str()函数返回一
-
MySQL中or语句用法示例
1.mysql中or语法的使用,在mysql语法中or使用注意点. 项目遇到坑,遍历发放奖励数据查询错误!!! $sql = 'SELECT * FROM `vvt_spread_doubleegg_exchange_award` AS p WHERE p.`act_type` = 4 or p.`act_type` = 5 AND p.`user_id` = ' .$user_id ; sql中的or语法一般用于多个条件的查询,上面的语法查询的相当于:两个sql查询出来的数据集合. $sql
-
python中hashlib模块用法示例
我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法 具体应用 #!/usr/bin/env python # -*- coding: UTF-8 -*- #pyversion:python3.5 #owner:fuzj import h
-
pytorch中Parameter函数用法示例
目录 用法介绍 代码介绍 用法介绍 pytorch中的Parameter函数可以对某个张量进行参数化.它可以将不可训练的张量转化为可训练的参数类型,同时将转化后的张量绑定到模型可训练参数的列表中,当更新模型的参数时一并将其更新. torch.nn.parameter.Parameter data (Tensor):表示需要参数化的张量 requires_grad (bool, optional):表示是否该张量是否需要梯度,默认值为True 代码介绍 pytorch中的Parameter函数具
-
Android开发中ProgressDialog简单用法示例
本文实例讲述了Android开发中ProgressDialog简单用法.分享给大家供大家参考,具体如下: 网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下: 建立android工程等工作都略去,Google一下就可以了. 下面来介绍主要的Activity ProgressBarDemo.java package com.lveyo.android.demo.progressbar; import android.app.Ac
-
jQuery中Find选择器用法示例
本文实例讲述了jQuery中Find选择器用法.分享给大家供大家参考,具体如下: find 可以查找指定节点下的节点,它是会递归查找的,即可以查找子节点的子节点 示例如下: function CalculatePrice() { var totalMoney = 0; $(".trBookCartItem").each(function (index, item) { var price = $(item).find(".spanPrice").text(); va
-
vue3 中 computed 新用法示例小结
vue3 中 的 computed 的使用,由于 vue3 兼容 vue2 的选项式API,所以可以直接使用 vue2的写法,这篇文章主要介绍 vue3 中 computed 的新用法,对比 vue2 中的写法,让您快速掌握 vue3 中 computed 的新用法. 组合式 API 中使用 computed 时,需要先引入:import { computed } from "vue".引入之后 computed 可以传入的参数有两种:回调函数和 options .具体看看它是如何使用
-
MySql中JOIN的用法示例详解
目录 笛卡尔积:CROSS JOIN 内连接:INNER JOIN 左连接:LEFT JOIN 右连接:RIGHT JOIN 外连接:OUTER JOIN USING子句 自然连接:NATURE JOIN 上次面试被问到JOIN,自己都已经忘了课堂上讲的笛卡尔积那些就是JOIN,最近重新复习了一遍 JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接. 先创建两个表,下面用于示例 CREATE TABLE t_blog( id INT PRIM
-
Python标准库中的logging用法示例详解
目录 1.logging的介绍 2.简单用法示例 3.日志级别 4.打印格式的各个参数 5.日志输出到指定文件 6.日志回滚(按照文件大小滚动) 7.日志回滚(按照时间滚动) 1.logging的介绍 logging是Python标准库中记录常用的记录日志库,通过logging模块存储各种格式的日志,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等. 2.简单用法示例 首先创建一个logger.py的文件,其里面的代码如下所示: import logging # 1.创
-
Python2和Python3中print的用法示例总结
前言 最近在学习python,对于python的print一直很恼火,老是不按照预期输出.在python2中print是一种输出语句,和if语句,while语句一样的东西,在python3中为了填补python2的各种坑,将print变为函数,因此导致python3中print的一些使用和python2很不一样.下面就来给大家详细的总结了关于Python2和Python3中print的用法,话不多说了,来一起看看详细的介绍吧. 一.Python2中的print用法 在Python2 中 prin
随机推荐
- cmd批处理中set /a和set /p的区别介绍
- FileSystemObject 示例代码
- 微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
- 详解Nodejs基于mongoose模块的增删改查的操作
- JS getStyle获取最终样式函数代码
- 代码精简的可以实现元素圆角的js函数
- asp.net 文章内容分页显示的代码
- 使用phpstorm和xdebug实现远程调试的方法
- ajax遍历xml文档的方法
- javascript Ajax 类实现代码
- ubuntu上配置Nginx+PHP5 FastCGI服务器配置
- Js动态添加复选框Checkbox的实例方法
- c#线程Thread示例
- 深入理解PHP 数组之count 函数
- PHP操作Memcache实例介绍
- Python无损音乐搜索引擎实现代码
- 详解vue项目打包后通过百度的BAE发布到网上的流程
- JS获取指定月份的天数两种实现方法
- 原生js通过一行代码实现简易轮播图
- 从零搭一个自用的前端脚手架的方法步骤