热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cchar转string_string中c_str()的使用方法和特性

标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。c_str()是Borland封装

标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。

  1. c_str()是Borland封装的String类中的一个函数,它返回当前字符串的首字符地址。换种说法,c_str()函数返回一个指向正规C字符串的指针常量,内容与本string串相同。这是为了与C语言兼容,在C语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成C中的字符串样式。
  2. c_str()的原型是:const char*c_str() const;
  3. c_str()生成一个const char*指针,指向以空字符终止的数组。而data()与c_str()类似,但是返回的数组不以空字符终止。
  4. 注意:一定要使用strcpy()等函数来操作c_str()返回的指针。例如下面这样写就是错误的:

char* c;
string s="1234";
c = s.c_str();

上述代码中,c最后指向的内容是垃圾,因为s对象被析构,其内容被处理,同时编译器将会报错。正确代码如下:

char *cstr,*p;
string str ("Please split this phrase into tokens");
cstr = new char [str.size()+1];
strcpy (cstr, str.c_str());

  1. 如果一个函数要求char*参数,可以使用c_str()方法。
  2. copy(p,n,size_type _Off = 0):从string类型对象中至多复制n个字符到字符指针p指向的空间中。默认从首字符开始,但是也可以指定,开始的位置(记住从0开始)。返回真正从对象中复制的字符。第三个参数可以缺省。以下代码显示了copy()函数的用法:

string str ("Please split this phrase into tokens");
basic_string :: size_type cc;
char arr[20] = {0};
basic_string :: pointer arrayPtr = arr;
cc = str.copy(arrayPtr,10);
cout <<"The number of copied characters in cc is: "<cout <<"The copied characters array1 is: " <


若你对人工智能&#xff08;CV/NLP&#xff09;、C&#43;&#43;/python编程、互联网就业及发展有兴趣&#xff0c;欢迎点赞关注和收藏。谢谢鼓励&#xff01;&#xff01;&#xff01;

C&#43;&#43;相关知识&#xff1a;

Anxjing.AI&#xff1a;C&#43;&#43; this_thread::sleep_for​zhuanlan.zhihu.com
e594086d820187d71663cbc1747e7811.png
Anxjing.AI&#xff1a;C&#43;&#43; Lambda表达式​zhuanlan.zhihu.com
7e9f34aaf4f575579d232d461b227ab1.png
Anxjing.AI&#xff1a;C&#43;&#43;并发_condition_variable​zhuanlan.zhihu.com
18849b4143aae53261cb3f6337fb3d64.png
Anxjing.AI&#xff1a;生产者-消费者模型​zhuanlan.zhihu.com
5c668f45116b6fe419f0264df58c71fe.png
Anxjing.AI&#xff1a;C&#43;&#43;预处理指令​zhuanlan.zhihu.com
0617ba8101b752291536c11fd620e62a.png
Anxjing.AI&#xff1a;C&#43;&#43;工具&#xff1a;Cmake​zhuanlan.zhihu.com
6aab3c21f6337c19370367f74bf77e20.png
Anxjing.AI&#xff1a;SSH 学习​zhuanlan.zhihu.com
546cb338f4127fbe54cdd39bb5eecbc4.png
Anxjing.AI&#xff1a;记录C&#43;&#43;阶段性学习一​zhuanlan.zhihu.com
af28788f7d6fe0c63e0126693548dee6.png
Anxjing.AI&#xff1a;DesignPatterns C&#43;&#43;&#xff1a;单例模式​zhuanlan.zhihu.com
09404840888c54cbfebc40ef61a2beb5.png
Anxjing.AI&#xff1a;C&#43;&#43;基础&#xff1a;map简析​zhuanlan.zhihu.com
759b0b768e5069b8786d195fff43343a.png
Anxjing.AI&#xff1a;C&#43;&#43;基础&#xff1a;memset函数简析​zhuanlan.zhihu.com
932c50345b590474e476f53a5fe5ae8e.png
Anxjing.AI&#xff1a;C&#43;&#43;基础:break&continue区别​zhuanlan.zhihu.com
53553a9b5c647882f21f6d13c58fa495.png
Anxjing.AI&#xff1a;C&#43;&#43;基础&#xff1a;指针和引用的区别​zhuanlan.zhihu.com
bcd9f46361725433f7f94d4216b10d25.png
Anxjing.AI&#xff1a;C&#43;&#43;中::和:&#xff0c; .和->的作用和区别?​zhuanlan.zhihu.com
0a925bca8ff0a5ec995a41886d3af0d2.png
Anxjing.AI&#xff1a;string中c_str()的使用方法和特性​zhuanlan.zhihu.com
759b0b768e5069b8786d195fff43343a.png
Anxjing.AI&#xff1a;C &#43;&#43; strcpy&#xff08;&#xff09;和strncpy&#xff08;&#xff09;函数​zhuanlan.zhihu.com
69fc0f453fc8e6617a47c532ba694ced.png
Anxjing.AI&#xff1a;C&#43;&#43;基础-关键字virtual​zhuanlan.zhihu.com
168c5558196688d86ca6ecf12857bbe3.png
Anxjing.AI&#xff1a;C&#43;&#43;基础-函数重载​zhuanlan.zhihu.com
8db87eb848627d7c9731aff125c190fd.png
Anxjing.AI&#xff1a;C&#43;&#43;基础-static​zhuanlan.zhihu.com
c20806e0e6eb07fb3b22ae51dd11e0f9.png
Anxjing.AI&#xff1a;C&#43;&#43;基础&#xff1a;判断文件是否存在的方法​zhuanlan.zhihu.com
630e47c74d2be1f48275688c166e365d.png
Anxjing.AI&#xff1a;C&#43;&#43;基础-strstr查找子串​zhuanlan.zhihu.com
c8b54846e09890d980b2785e3e8f6e91.png
Anxjing.AI&#xff1a;C&#43;&#43;基础&#xff1a;std::thread多线程​zhuanlan.zhihu.com
1b1933252f39b91728d64ef39af54fa9.png



推荐阅读
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
author-avatar
龙门居士1966
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有