c_str 以及atoi

const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 比如:最好不要这样: char* c; string s="1234"; c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理

应该这样用: char c[20]; string s="1234"; strcpy(c,s.c_str()); 这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作

再举个例子c_str() 以 char* 形式传回 string 内含字符串如果一个函数要求char*参数,可以使用c_str()方法: string s = "Hello World!";printf("%s", s.c_str()); //输出 "Hello World!"

#include <stdio.h>#include <stdlib.h>int atoi(char *str){        int value = 0;        while(*str>=‘0‘ && *str<=‘9‘)        {                value *= 10;                value += *str - ‘0‘;                str++;        }        return value;

}

时间: 2024-10-27 11:36:03

c_str 以及atoi的相关文章

一、c_str()、atoi()、进制转换等

c-str()的功能:当程序用到atoi().strcpy()这类的C函数时,就要将string类字符串转换成char型字符串:(string是个类,char是个常规类型) c_str()的实现: 1 #include <iostream> 2 using namespace std; 3 4 //定义一个简易的string类,实现将传进来的任意类型的字符串 储存到 char*指针指向的空间里 5 class my_string 6 { 7 public: 8 my_string(const

DHT协议C++实现过程中各种问题

---恢复内容开始--- 博主是个菜鸟,什么地方写的不对或者理解有误的地方还请指正出来. DHT协议是BT协议中的一部分,也是一个辅助性的协议.HTTP协议中用 来定位资源也就是html文本是用URL这样的协议的,而在BT或者说P2P的 世界中,没有了以前那样可以直接定位的服务器,所以需要能够动态的掌 握到资源的分布,那DHT协议就是BT中用来定位资源的协议,具体的不多 说,可以看看官方网站对于BT或者DHT十分详尽的描述: http://www.bittorrent.org/beps//bep

【2014】字符串(3)

题目描述(50分): 通过键盘输入100以内正整数的加.减运算式,请编写一个程序输出运算结果字符串. 输入字符串的格式为:"操作数1 运算符 操作数2","操作数"与"运算符"之间以一个空格隔开. 补充说明: 1.操作数为正整数,不需要考虑计算结果溢出的情况. 2.若输入算式格式错误,输出结果为"0". 要求实现函数: void arithmetic(const char *pInputStr, long lInputLen,

获取两个字符串日期的差值的方法

日期的格式:“yymmddhhmmss”是一个字符串,计算两个日期之间的差值,显然就是计算两个日期之间相差的秒数,有个简洁的方法是将字符串转化为time_t格式,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数 我们可以看到它的定义是这样的 #ifndef _TIME_T_DEFINEDtypedef long time_t;           /* 时间值 */#define _TIME_T_DEFINED       /* 避免重复定义

算法题:前缀表达式的运算

输入描述: 输入包含多组数据,每组数据包含两行. 第一行为正整数n(3≤n≤50),紧接着第二行包含n个由数值和运算符组成的列表. "+-*/"分别为加减乘除四则运算,其中除法为整除,即"5/3=1". 输出描述: 对应每一组数据,输出它们的运算结果. 输入例子: 3 + 2 3 5 * + 2 2 3 5 * 2 + 2 3 输出例子: 5 12 10 #include <iostream> #include <string.h> #inc

采集元数据的C++实现

我要做的是提取Test_case的名字,以及Test_case的持续时间(单位秒):下面是一段示例元数据 Start| 20140618 root (6033) | tpi 1.4 | 14:53:52 10050943579848 0 | Start| 20814 SunOS 5.11 11.2 i86pc tcx4440-01 | STF_ENV| STC_NAME = os-zones | STF_ENV| STC_VERSION = 2.10.0 | STF_ENV| STC_OS_VE

[从头读历史] 第307节 星球战争 BC2699 至 BC2600(公元前27世纪)

剧情提要: 最初的时候是原始时期战争,所谓原始时期,指的是约公元前30世纪-前22世纪. 公元前27世纪,没有发生什么有记录的战争. 正剧开始: 星历2016年07月18日 11:40:04, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[星球战争 BC2699 至 BC2600(公元前27世纪)]. 神农氏来找阿伟闲聊,谈到他准备去攻打河北,那里有一个部落不服他.那个部落叫什么名字, 他没有说.可能名字神马的不是很重要吧. 然后神农氏叹了口气说,路途遥远,要想去

C++求解形如“a/b x + d/c = f/e”的一元一次分式方程

思路比较清晰 1.从命令行读入方程 2.解析字符串,解析出几个参数a/b,d/c,f/e 3.Rational类定义了分数的运算,代入运算即可 这个小程序的结构 \---main.cpp       程序的入口 |---rational.h      分数类的声明 |---Rational.cpp分数类的实现 |---myException.h定义几个异常类 |---test.cpp单独使用,测试Rational类 代码如下 main.cpp #include "rational.h"

【leetcode】Evaluate Reverse Polish Notation(middle)

Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. Some examples: ["2", "1", "+", "3", "*"] -&g