C++中string.c_str()函数的一些疑问,寻求高手帮忙 [问题点数:20分,结帖人FZNPLY]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:40
结帖率 100%
Bbs1
本版专家分:40
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs7
本版专家分:11166
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs9
本版专家分:64892
Blank
红花 2011年8月 C/C++大版内专家分月排行榜第一
2010年12月 C/C++大版内专家分月排行榜第一
Blank
黄花 2019年4月 扩充话题大版内专家分月排行榜第二
2019年3月 扩充话题大版内专家分月排行榜第二
2011年9月 C/C++大版内专家分月排行榜第二
2011年4月 C/C++大版内专家分月排行榜第二
2010年11月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年6月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:40
Bbs1
本版专家分:40
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs9
本版专家分:64892
Blank
红花 2011年8月 C/C++大版内专家分月排行榜第一
2010年12月 C/C++大版内专家分月排行榜第一
Blank
黄花 2019年4月 扩充话题大版内专家分月排行榜第二
2019年3月 扩充话题大版内专家分月排行榜第二
2011年9月 C/C++大版内专家分月排行榜第二
2011年4月 C/C++大版内专家分月排行榜第二
2010年11月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年6月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:40
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:40
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:40
Bbs1
本版专家分:40
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs9
本版专家分:64892
Blank
红花 2011年8月 C/C++大版内专家分月排行榜第一
2010年12月 C/C++大版内专家分月排行榜第一
Blank
黄花 2019年4月 扩充话题大版内专家分月排行榜第二
2019年3月 扩充话题大版内专家分月排行榜第二
2011年9月 C/C++大版内专家分月排行榜第二
2011年4月 C/C++大版内专家分月排行榜第二
2010年11月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年6月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:40
Bbs1
本版专家分:40
Bbs1
本版专家分:40
Bbs9
本版专家分:58992
Blank
红花 2012年12月 挨踢职涯大版内专家分月排行榜第一
2011年9月 C/C++大版内专家分月排行榜第一
2010年8月 C/C++大版内专家分月排行榜第一
2009年11月 C/C++大版内专家分月排行榜第一
Blank
黄花 2012年11月 挨踢职涯大版内专家分月排行榜第二
2011年9月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2012年1月 Linux/Unix社区大版内专家分月排行榜第三
2011年8月 C/C++大版内专家分月排行榜第三
2011年8月 Linux/Unix社区大版内专家分月排行榜第三
2010年4月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:40
Bbs1
本版专家分:40
Bbs1
本版专家分:40
C++字符串处理总结(char、string

0. 写在最前面 希望大家收藏: 本文持续更新地址:https://haoqchen.site/2018/09/09/<em>string</em>-and-char/ 也欢迎收藏我的另一篇总结:编程常用数据结构与<em>函数</em>总结(vector、list、stack、deque、字符串) <em>C</em>++字符串处理有最原始的char以及<em>string</em>两种方式,这里对两种方式常用的功能进行总结及对比。 如果觉得还不错就点个赞,...

C++输入字符串的几种方法

<em>C</em>++<em>中</em>常见的几种输入字符串的方法如下: cin、cin.get()、cin.getline()、getline()、gets()、getchar() 1. cin&amp;gt;&amp;gt; 用法一:最常用、最基本的用法,输入一个数字: #include &amp;lt;iostream&amp;gt; using namespace std; main () { int a,b; cin&amp;gt;&amp;gt;a&amp;gt...

c_str()的用法

<em>c_str</em>()就是将<em>C</em>++的<em>string</em>转化为<em>C</em>的字符串数组,<em>c_str</em>()生成一个const char *指针,指向字符串的首地址。 char *p=s[10]; <em>string</em> a=“welcome”; strcpy(p,a.<em>c_str</em>()); cout&lt;&lt;p; 结果为"welcome". 这里其实做了一个隐式转换,即从char* -&gt; const char* <em>string</em> ...

C++ string是否包含某字符串方法(已封装)

直接上代码,也比较简单。 //判断字符串是否包含某字符串 //@params:str:大的字符串 //@params:contains_str:所包含的字符串 //@return: false:未包含 true:包含 BOOL Is<em>C</em>ontainsStr(<em>string</em> str,<em>string</em> contains_str) { <em>string</em>::size_type idx = str.find(c...

标准C++string类的用法总结

相信使用过MF<em>C</em>编程的朋友对<em>C</em>String这个类的印象应该非常深刻吧?的确,MF<em>C</em><em>中</em>的<em>C</em>String类使用起来真的非常的方便好用。但是如果离开了MF<em>C</em>框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MF<em>C</em>框架,也可以想办法使用MF<em>C</em><em>中</em>的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准<em>C</em>++<em>中</em><em>string</em>类的使用。标准<em>C</em>++<em>中</em>提供的str

C++】字符串详解

字符串简介: 字符串是存储在内存<em>中</em>连续字节的一系列字符。<em>C</em>++<em>中</em>处理字符串有两种风格,一种来自<em>C</em>语言,叫做<em>C</em>语言风格;另一种风格基于<em>string</em>库,我们姑且叫<em>string</em>库风格。其<em>中</em><em>C</em>语言风格,利用了字符串储存在内存<em>中</em>连续字节的特点,将字符串储存在字符数组<em>中</em>,以‘\0’结尾;而<em>string</em>库风格提供的方法,允许程序员将字符串作为变量来使用,接下来将分别介绍这两种风格。 1.<em>C</em>语言风格 (1)字符串...

C++ stringc_str()、data()、copy(p,n)函数的用法

1、<em>c_str</em>():生成一个const char*指针,指向以空字符终止的数组。 参考自:csqlwy - 博客园 链接:www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html(点击尾部阅读原文前往) ①因为<em>c_str</em>()返回的只是一个指向某字符串的指针,因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存<em>中</em> int main() { ...

stringc_str()用法总结

<em>函数</em>原型 const char* <em>c_str</em>() const; 返回值 <em>c_str</em>()<em>函数</em>返回一个指向<em>C</em>字符串的指针常量,内容是字符串对象的当前内容加上一个额外的终止字符(‘\ 0’)。 这将与c语言兼容,<em>c_str</em>()把<em>string</em> 对象转换成c<em>中</em>的字符串样式。 错误案例 const char* c; <em>string</em> s="test"; c = s.<em>c_str</em>(); 解释 因为<em>c_str</em>(...

stringc_str()的实现原理是怎样的?

我在写一个线性表的类库,希望能将表<em>中</em>的数据转化成常量字符串const char *,这个类似<em>string</em><em>中</em>的<em>c_str</em>()。 不知道其实现原理是如何?看类半天<em>string</em>源码都没看出头绪! 问题是这样

string.c_str()函数说明

   const * char <em>c_str</em>()    一个将<em>string</em>转换为 const* char的<em>函数</em>。    <em>string</em>的<em>c_str</em>()返回的指针是由<em>string</em>管理的。它的生命期是<em>string</em>对象的生命期。然后可以按<em>C</em>的方式使用这个指针,或把它的内容复制出来。    例如:        <em>string</em> s;        cin>>s;        const char *ch=s.

basic_string::c_str() 与 basic_string::data() 区别

const value_type *<em>c_str</em>( ) const;const value_type *data( ) const;data只是返回原始数据序列,没有保证会用traits::eos(),或者说'/0'来作字符串结束.   当然,可能多数实现都这样做了。   <em>c_str</em>是标准的做法,返回的char*   一定指向一个合法的用'/0'终止的<em>C</em>兼容的字符串。   所以,如果需要<em>C</em>兼容的字符串,<em>c_str</em>是标准的做法,data并不保证所有STL的实现的一致性。 你或许会问,<em>c_str</em>()的功能包含da

[译]C++17,使用 string_view 来避免复制

看到一个介绍 <em>C</em>++17 的系列博文(原文),有十来篇的样子,觉得挺好,看看有时间能不能都简单翻译一下,这是第五篇~ 当字符串数据的所有权已经确定(譬如由某个<em>string</em>对象持有),并且你只想访问(而不修改)他们时,使用 std::<em>string</em>_view 可以避免字符串数据的复制,从而提高程序效率,这(指程序效率)也是这篇文章的主要内容. 这次要介绍的 <em>string</em>_view 是 <em>C</em>...

c_str()函数

<em>函数</em>声明:const char *<em>c_str</em>(); <em>c_str</em>()<em>函数</em>返回一个指向正规<em>C</em>字符串的指针, 内容与本<em>string</em>串相同. 这是为了与c语言兼容,在c语言<em>中</em>没有<em>string</em>类型,故必须通过<em>string</em>类对象的成员<em>函数</em><em>c_str</em>()把<em>string</em> 对象转换成c<em>中</em>的字符串样式。 标准头文件包含操作c-串的<em>函数</em>库。这些库<em>函数</em>表达了我们希望使用的几乎每种字符串操作。 当调用

c++字符串操作

相关<em>函数</em>说明: str1.find(str2)从str1<em>中</em>定位str2的位置,返回值为第一次出现str2位置。 str1.substr(a,b)截取a~b范围间的字符串(注:左闭右开) #include&amp;lt;iostream&amp;gt; #include&amp;lt;<em>string</em>&amp;gt; using namespace std; int main(){     <em>string</em> str1,str2;  ...

关于c++c_str函数的一些问题

1.“<em>c_str</em>返回的是临时指针,不能对其操作”这句话是什么意思,临时指针是像传值一样的拷贝吗,存在于临时栈区的那种 2.一个<em>string</em>被<em>c_str</em><em>函数</em>作用后会被析构??为什么我自己运行出来不是这样子的,下面附图![图片说明](https://img-ask.csdn.net/upload/201604/04/1459742759_78074.png) ![图片说明](https://img-ask.csdn.net/upload/201604/04/1459742775_748159.png)

[c++]string怎样判断字符串里面是否含有某个字符串?

摘自百度知道:https://zhidao.baidu.com/question/438950092.html一、<em>C</em>++风格。<em>C</em>++的<em>string</em>类提供了字符串<em>中</em>查找另一个字符串的<em>函数</em>find。其重载形式为:<em>string</em>::size_type <em>string</em>::find(<em>string</em> &amp;amp;);功能为在<em>string</em>对象<em>中</em>,查找参数<em>string</em>类型的字符串是否存在,如果存在,返回起始位置。不存在则...

C++字符串操作详解

选用<em>C</em>++标准程序库<em>中</em>的<em>string</em>类,是因为他和c-<em>string</em>比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作<em>函数</em>足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。首先,为了在我们的程序<em>中</em>使用<em>string</em>类型,我们必须包含头文件 。如下: #include //注意这里不是st

自己写了一个c++ string类!!!

自己写了一个c++ <em>string</em>类!!!准确的说是实现了一个basic_<em>string</em>类,效率上不输标准库!!! 望<em>高手</em>批评指正!!! http://blog.csdn.net/focusing_on_

c++ stringc_str() 疑惑

环境: <em>C</em>entOS release 6.5 (Final) Linux bogon 2.6.32-431.el6.x86_64 gcc 版本 4.7.4 (G<em>C</em><em>C</em>) 问题描述: 如果用一个const

C++】STL常用容器总结之十二:string

13、<em>string</em>类声明<em>string</em>类本不是STL的容器,但是它与STL容器有着很多相似的操作,因此,把<em>string</em>放在这里一起进行介绍。 之所以抛弃char*的字符串而选用<em>C</em>++标准程序库<em>中</em>的<em>string</em>类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作<em>函数</em>足以完成我们大多数情况下的需要。我们尽可以把它看成是<em>C</em>++的基本数据类型。 首先,为了在我

String 类 的c_str()函数

先看一个例子:int lines, i; int left, right; <em>string</em> strleft, strright; pNode tPointerArray[MaxNum]; pNode tPointer; bool flag[MaxNum] = {false}; cin >> lines; for ( i = 0; i < lin

stringc_str函数的用法

<em>c_str</em><em>函数</em>的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。   c++语言提供了两种字符串实现,其<em>中</em>较原始的一种只是字符串的c语言实现。与<em>C</em>语言的其他部分一样,它在c++的所有实现<em>中</em>可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。   标准头文件&lt;c<em>string</em>&...

c++(string类型)

c++对于字符串的处理提供了两种方法: 按照c<em>中</em>的字符数组处理。 按照<em>string</em>类型的对象处理。 <em>string</em>类是一种抽象数据类型(ADT),不是内嵌的、原子数据类型;和int、float、double等不同。 与字符数组相比,使用<em>string</em>类型更加简单、直观,可以像处理其他类型的变量一样进行处理。 考虑如下程序,了解<em>string</em>对象的定义和使用: #include ...

C++ String源码

<em>string</em>类型

string类的c_str()用法

https://www.cnblogs.com/lifexy/p/8642163.html写的比较详细

c++ string函数详细返回值及用法!

通过在网站上的资料搜集,得到了很多关于<em>string</em>类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于<em>string</em>类<em>函数</em>有哪些和怎样用的文档了! 下面先罗列出<em>string</em>类的<em>函数</em>有哪一些,然后再罗列出<em>函数</em>的原型,最后到代码的实现 标准<em>C</em>++<em>中</em>提供的<em>string</em>类得功能也是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列...

C++ string类的实现

学了<em>C</em>++的重载机制之后,忍不住去探究一下<em>C</em>++<em>中</em><em>string</em>类的内部实现过程。于是仿照这<em>string</em>类的功能,写了一个自己的<em>string</em>类练练手。可能还有些东西并未完善,后面再不断去完善。参考代码如下所示:Main.cpp[cpp] view plain copy/***************************************************** <em>C</em>opyright (<em>C</em>...

c++截取字符串

<em>C</em>++的<em>string</em>类提供了大量的字符串操作<em>函数</em>,提取字符串的一部分,可采用substr<em>函数</em>实现

String a= “abc” String b = "abc" String c = new String("abc") String d = "ab" + "c" .他们之间用 == 比较的结果

做个<em>string</em>的测试咯。如下: String a= “abc” String b = "abc" String c = new String("abc") String d = "ab" + "c" .他们之间用 == 比较的结果 Java<em>中</em>字符串对象创建有两种形式。 一种为字面量形式,如String str = "droid";, 另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid"); 这两种方式我们在代码编写时都经常使用,尤其是字面量的方式

C/C++ int 转 stringstring 转 int 的几种方法

<em>C</em> int 转 <em>string</em> sprintf int a = 1; char strDst[256] = {0}; sprintf_s(strDst,256,&amp;quot;%d&amp;quot;,a); itoa int a = 1; char strDst[256] = {0}; // 10代表使用十进制协议,默认使用十六进制 itoa(strDst,i,10); <em>string</em> 转 int atoi cha...

string,c_string,字符数组总结

选用<em>C</em>++标准程序库<em>中</em>的<em>string</em>类,是因为他和c-<em>string</em>比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作<em>函数</em>足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联。 <em>string</em>是STL提供的一种自定义类型,它处理空间占用问题是自动的,需要多少,用多少,不像字符指针那样,提心吊胆于指针脱钩时的空间游离,...

C++对String的各种操作

1.<em>string</em>的各种动态、静态赋值 //静态 <em>string</em> s1=(&amp;quot;abckd&amp;quot;); <em>string</em> s2(&amp;quot;bbbbb&amp;quot;); <em>string</em> s3(s1); <em>string</em> s4=s2; //动态 <em>string</em> s5; cin&amp;amp;gt;&amp;amp;gt;s5; 2.sting的遍历 <em>string</em> s=&amp;quot;xiaojaiyu&amp;quot;; <em>string</em>::iterator iter

C++ string 做返回类型

------------------Func_ptr.h------------------------------------ #ifndef FUN<em>C</em>_PTR_H #define FUN<em>C</em>_PTR

C++ string类的c_str()方法小结

最近研究了一下基于c++的大数乘法算法, 碰到了<em>string</em>类对象与c风格字符串转换问题,有一个问题令我印象深刻,现在没有找到具体原因,记录下来。代码环境是Linux ubuntu,编译器是g++ 觉得写得比较好的博客罗列如下: 【转】https://www.cnblogs.com/lifexy/p/8642163.html 1.<em>c_str</em>() <em>c_str</em>()方法返回一个const cha...

C++ string类》

<em>C</em>++标准库<em>中</em><em>string</em>类以类型的形式对字符串进行封装,使得它除了像一个存储字符的容器外,更加包含了字符序列的处理操作。   <em>string</em>类所有<em>函数</em> <em>string</em>类的所有成员<em>函数</em> <em>函数</em>名称 实现功能 构造<em>函数</em> 产生或者复制字符串 析构<em>函数</em> 销毁字符串 assign,= 赋值 Swap 交换两个字符串的内容 append(),push...

c_str()函数问题

<em>c_str</em>()<em>函数</em>用于<em>string</em>与const char*之间的转换,也经常能用到,下面的例子你说输出啥? #include &lt;iostream&gt; #include &lt;<em>string</em>&gt; using namespace std; int main() { <em>string</em> s = "Alexia"; const char *str...

关于const_cast(str.c_str())的使用问题

偶然一次在写代码时用到了const_cast(str.<em>c_str</em>()),后来在调试程序的时候发现了问题。本来V<em>C</em>6和gcc的<em>string</em>应该是在相互赋值时不拷贝的,只有当其<em>中</em>一个<em>string</em>对象改变之后,两个<em>string</em>对象才会指向不同的值。但是,在那段代码里强转之后,<em>string</em>变成了类似于引用的一种情况,两个<em>string</em>完全同质了,改变一个另一个也变了。出现问题的帖子:ht

C++ c_str()的用法

<em>c_str</em>()<em>函数</em>返回一个指向正规<em>C</em>字符串的指针, 内容与本<em>string</em>串相同. <em>C</em>++<em>中</em> <em>c_str</em>( )主要用法就是这是为了与c语言兼容,在c语言<em>中</em>没有<em>string</em>类型,故必须通过<em>string</em>类对象的成员<em>函数</em><em>c_str</em>()把<em>string</em> 对象转换成c<em>中</em>的字符串样式。<em>c_str</em>() 以 char* 形式传回 <em>string</em> 内含字符串。char c[20]; <em>string</em> s=&quot;1234&quot;; st...

C语言string函数详解

PS:本文包含了大部分<em>string</em>s<em>函数</em>的说明,并附带举例说明。本来想自己整理一下的,发现已经有前辈整理过了,就转了过来。修改了原文一些源码的问题,主要是用char *字义字符串的问题,导致程序运行时崩溃。另外自己重写了部分测试程序,使其更能满足自己测试的需要。不当之处,还请海涵。 @<em>函数</em>原型:char *strdup(const char *s) <em>函数</em>功能:字符串拷贝,目...

C++】C++的字符串类以及C字符串和C++字符串的转换

文章目录字符串与数字的转换使用方法<em>string</em>--&gt;数字数字--&gt;<em>string</em>面试题 字符串与数字的转换 利用标准库<em>中</em>相关的类 字符串流类(sstream)用于<em>string</em>的转换 sstream相关头文件 i<em>string</em>stream字符串输入流 o<em>string</em>stram字符串输出流 使用方法 <em>string</em>–&gt;数字 i<em>string</em>stream iss("123.45");...

c++ string转c 字符数组的方法

 c++ <em>string</em>转换c字符串有三种方法: 1.    const char * <em>string</em>::data()    以字符数组的形式返回字符串内容,但不主动添加'\0', 即char[<em>string</em>.size()]的值是未定义行为 2.    const char * <em>string</em>::<em>c_str</em>()   返回一个以'\0'结尾的字符数组 3.    size_t <em>string</em>::co...

c/c++ string转int int转string string拼接

1.<em>string</em>转int 利用c<em>函数</em>atoi() 头文件: #include&lt;stdlib.h&gt; #include&lt;cstdlib&gt; 原型:int atoi(const char *nptr); 举例: <em>string</em> strTemp = “test”; int iTemp =atoi(strTemp.<em>c_str</em>()); 2.int转<em>string</em>和s...

有关stringstring.c_str()的问题

今天遇到<em>string</em>.<em>c_str</em>()返回值出现错误的问题,因为char*的结束符可能是空白字符【\t,\r,\n等等】,而字符串<em>string</em>的结束符号是\0,所以在转换的时候可能出现问题,为了避免出现这种问题,在定义<em>string</em>的时候,尽量采用<em>string</em>(src,length)的初始化方式。...

C++string类常用函数 c++string常用函数用法总结

<em>string</em>类的构造<em>函数</em>: <em>string</em>(const char *s); //用c字符串s初始化 <em>string</em>(int n,char c); //用n个字符c初始化 此外,<em>string</em>类还支持默认构造<em>函数</em>和复制构造<em>函数</em>,如<em>string</em> s1;<em>string</em> s2=&quot;hello&quot;;都是正确的写法。当构造的<em>string</em>太长而无法表达时会抛出length_error异常 <em>string</em>类的字符...

C++ stringc_str函数极易产生bug, 有陷阱, 请慎用---强烈建议用strncpy来拷贝c_str

<em>string</em>的<em>c_str</em><em>函数</em>很怪异很危险, 先来看一个简单的例子: #include #include using namespace std; int main() { <em>string</em> s = "abc"; const char *p = s.<em>c_str</em>(); cout << p << endl; // abc s = "xyz"; cout << p << endl; //

C++ string的字符串查找

<em>C</em>++ <em>string</em>类<em>中</em>的字符串查找     类<em>string</em>提供了大量查找功能和搜索功能,其<em>中</em>比较常用的查找和搜索<em>函数</em>是find()<em>函数</em>、 find_first_not_of()<em>函数</em>、find_first_of()<em>函数</em>、find_last_not_of()<em>函数</em>、find_last_of()<em>函数</em>、rfind()等。          find()<em>函数</em>的语法如下所示:     (1)

stringc_str()、data()、copy(p,n)函数的用法

标准库的<em>string</em>类提供了3个成员<em>函数</em>来从一个<em>string</em>得到c类型的字符数组:<em>c_str</em>()、data()、copy(p,n)。 1. <em>c_str</em>():生成一个const char*指针,指向以空字符终止的数组。 注: ①这个数组的数据是临时的,当有一个改变这些数据的成员<em>函数</em>被调用后,其<em>中</em>的数据就会失效。因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存<em>中</em>。注意。看...

C++:string的读入

问题描述 最近需要使用<em>C</em>++通过cin的方式读取一段字符串,然后发现普通的cin无法解决,需要使用getline。 cin无法正常工作的原因是由于其遇到空格即为停止读入,不能完整读取一段字符串。 解决代码 #include &amp;lt;iostream&amp;gt; #include &amp;lt;<em>string</em>&amp;gt; using namespace std; int main() { str...

C语言:定义字符串的几种方式

#include #include int main() { //定义字符串的几种方式 //字符串和字符数组的区别:最后一位是否是空字符 char names1[] = {'j', 'a', 'c', 'k', '\0'}; char names2[50] = "jack"; char * names3 = "jack"

C++ string输入输出字符串问题~~

#include #include int main() { using namespace std; <em>string</em> name; <em>string</em> dessert;

C/C++ %s %d %u 基本概念与用法

%d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的...

C string用法

#include &amp;lt;<em>string</em>&amp;gt; <em>string</em> S{&quot;111 Hiya Mia&quot;};   size_t p,l; S.substr(p,l);  //从S的p位置开始取l长度的sub<em>string</em>    stoi( S.substr(0,3) );  //范围int型111(  int stoi (const <em>string</em>&amp;amp; str, size_t* idx = 0,...

C++ string类型的字符串长度获取的三种方法

(1).用<em>string</em>的成员方法length()获取字符串长度                length()比较直观,表示的就是该字符串的长度。 [cpp] view plain copy  print? #include    #include        using namespace std;   int main()   {  

C++之string类型详解

from:http://citycowboy.blog.sohu.com/50058804.html 之所以抛弃char*的字符串而选用<em>C</em>++标准程序库<em>中</em>的<em>string</em>类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个泛型类出现,他集成的操作<em>函数</em>足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,==  进行比较,+ 做串联(是不是很简

C++ 字符串的分割函数split 及 用法

之前在<em>C</em>#<em>中</em>总用到字符串的分割,使用系统<em>函数</em>即可,比如:<em>string</em> a = &quot;This is a test&quot;;<em>string</em>[] strArray = a.Split(' ');在<em>C</em>++<em>中</em><em>string</em>没有直接的分割<em>函数</em>,可以利用<em>C</em>的stroke<em>函数</em>封装一个分割方法:vector&amp;lt;<em>string</em>&amp;gt; split(const <em>string</em>&amp;amp; str, const <em>string</em>&amp;amp;...

c++如何两个字符串合并成一个字符串?

比如 char str1="abcd"; char str2="efgh"; char str3; 如何把str1和str2<em>中</em>的内容放到str3<em>中</em>?

c++ char 与 string 之间的相互转换问题

第一部分: 将  char *    或者    char []   转换为  <em>string</em> 可以直接赋值,转换。       第二部分: 将   <em>string</em>   转换为 char *    或者    char []      <em>string</em> 是c++标准库里面其<em>中</em>一个,封装了对字符串的操作  把<em>string</em>转换为char* 有  3种方法:  1.  调用  st

将两个字符串合并为一个字符串并且输出

#include #include //将两个字符串合并为一个字符串并且输出 int main(void) { char str1[20] = {"Hello "}; char str2[20] = {"World "}; char *p1,*p2; p1 = str1; p2 = str2; //指针p1遍历到str

c++ string转char*

<em>C</em>++提供了两个<em>函数</em>:<em>c_str</em>()和data() 当处理较短的<em>string</em>时,直接调用这两个<em>函数</em>没有出现问题,调用格式如下: std::<em>string</em> str = "Hello Word"; char* p1 = str.<em>c_str</em>(); char* p2 = str.data(); 但是,当字符串比较长时,采用这两个<em>函数</em>,转换出来的char* 出现乱码,采用下边这种方式是完全没问题的,故记录在...

c++字符串的基本操作函数

1.应用于查找的find()<em>函数</em>#include #include using namespace std; int main() { <em>string</em> str; cin>>str; cout<<<<endl; //查找一个字符串出现的位置是找到该字符串第一个字符出现的位置

string 在c++的使用

字符类型和字符数组( 字符值知识点)要提前了解一下,能更好的了解<em>string</em>   <em>string</em>类型支持长度可变的字符串  在头文件 #include&amp;lt;<em>string</em>&amp;gt;<em>中</em>   一:<em>string</em>对象的定义和初始化      <em>string</em> s1; 默认构造<em>函数</em>,s1位空串 <em>string</em> s2(s1); 将s2初始化为s1的一个副本 <em>string</em> ...

c_str()

<em>c_str</em> <em>c_str</em><em>函数</em>的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。 c++语言提供了两种字符串实现,其<em>中</em>较原始的一种只是字符串的c语言实现。与<em>C</em>语言的其他部分一样,它在c++的所有实现<em>中</em>可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。 标准头文件包含操作c-串的<em>函数</em>库。这些

C++string类的用法

标准<em>C</em>++<em>中</em>提供的<em>string</em>类得功能也是非常强大的,一般都能满足我们开发项目时使用。而且我们可以讲<em>string</em>当作容器使用 , 而<em>string</em>也支持大部分的容器操作.当我们如遇到大数加减的问题(单开一篇贴子) , <em>string</em>类能够成为你的得力工具. 现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,直接进入正题吧! 要想使用标准<em>C</em>++<em>中</em><em>string</em>类,必须要包含 #include&lt;...

标识符未定义是什么意思??

#include void main() { float x,y; char op; printf("Enter x,operation &y:"); scanf("%f%c%f",

几款好的C/C++编译器(编译器而非IDE)

几个介绍IDE的博客: <em>C</em>/<em>C</em>++开发常用工具及系统编程 <em>C</em>/<em>C</em>++开发者必不可少的15款编译器+IDE   大家说的都已经很多了,那么我在这里就不罗嗦口了,我着重讲下编译器。 G<em>C</em><em>C</em>(GNU <em>C</em>ompiler <em>C</em>ollection) 官方网站:    https://gcc.gnu.org/ G<em>C</em><em>C</em>有Windows移植版本,比较出名的就是MinGW和T

用anaconda安装的opencv能用于c语言编程吗?

之前做的Python项目<em>中</em>需要用到opencv 我用 conda install 命令安装了opencv3.2.0 现在做<em>C</em>++项目 也需要用到opencv 之前conda安装的能拿来直接用吗 能用的话怎么配置 我怕再安装一个会产生冲突

未定义标识符:“SiftFeatureDetector” 解决办法

环境: visual studio 2017 opencv4.0.1 首先,sift不在opencv默认下载的库里面,需要自己额外配置,具体方法见以下链接: Open<em>C</em>V3.0丢失Nonfree模块——Simon_Lanzhou 写的很好,一步一步跟着做,这个版本是适用的; 配置完成后,即便加入了nonfree.hpp这个头文件,依旧遇到题目所说的问题:未定义标识符:“SiftFeatureDe...

stringc_str()函数

<em>C</em>++98<em>中</em><em>c_str</em>()的<em>函数</em>原型为 const char* <em>c_str</em>() const; <em>C</em>++11<em>中</em>的原型为

C++字符串切割的两种方法

字符串切割的使用频率还是挺高的,<em>string</em>本身没有提供切割的方法,但可以使用stl提供的封装进行实现或者通过c<em>函数</em>strtok()<em>函数</em>实现。1、通过stl实现涉及到<em>string</em>类的两个<em>函数</em>find和substr: 1、find<em>函数</em> 原型:size_t find ( const <em>string</em>&amp;amp; str, size_t pos = 0 ) const; 功能:查找子字符串第一次出现的位置。 参

注意stringc_str()使用带来的问题

问题再现:

向磁盘里输入数据 c源代码下载

向磁盘里输入数据并保存为文件,适用于初学者,很基础; 相关下载链接:[url=//download.csdn.net/download/a1552040/3569113?utm_source=bbsseo]//download.csdn.net/download/a1552040/3569113?utm_source=bbsseo[/url]

360的91助手软件下载

360的91助手软件很好用的软件,资源超多的,超广的,超实用的软件库! 相关下载链接:[url=//download.csdn.net/download/copyzcl01/3823138?utm_source=bbsseo]//download.csdn.net/download/copyzcl01/3823138?utm_source=bbsseo[/url]

电脑提速软件下载

电脑提速,针对电脑运行速度,网速,进行提速。。。花钱从网上买的,在这里收些积分。。。 相关下载链接:[url=//download.csdn.net/download/wanghualei111/5576031?utm_source=bbsseo]//download.csdn.net/download/wanghualei111/5576031?utm_source=bbsseo[/url]

我们是很有底线的