C/C++ 相关函数

来源:互联网 发布:建筑学就业前景知乎 编辑:程序博客网 时间:2024/05/16 08:17
C/C++ 相关函数

1. c_str()函数     

       c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言实现。与C语言的其他部分一样,它在c+的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。因为C中没有string这种数据类型,在C++中才提供了这种标准库类型。

        标准头文件<cstring>包含操作c-串的函数库,实际上它是c库函数中的<string.h>头文件。这些库函数表达了我们希望使用的几乎每种字符串操作。
        当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法(该函数在<sting>头文件中定义),它返回一个客户程序可读不可改的指向字符数组的指针,然后就可以调用<cstring>中已定义的函数了。
例:

#include <iostream>
#include <string>
using std::string;
void main()
{
string add_to="hello!";
//std::cout<<add_to;
const string add_on="baby";

const char*cfirst = add_to.c_str();
const char*csecond = add_on.c_str();
char*copy = new char[strlen(cfirst) + strlen(csecond) + 1];
strcpy( copy, cfirst);
strcat( copy, csecond);
add_to = copy;
delete [] copy;
std::cout<<add_to<<std::endl;
}

2。memset()函数

#include <string.h>
void *memset( void *buffer, int ch, size_t count );
功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。
memset() 可以应用在将一段内存初始化为某个值。例如:
memset( the_array, '/0', sizeof(the_array) );
这是将一个数组的所有分量设置成零的很便捷的方法。

3。gets() 函数
#include <stdio.h>
char *gets( char *str );
gets()函数从STDIN(标准输入)读取字符并把它们加载到str(字符串)里,直到遇到新行(/n)或到达EOF.
新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL.

4。getchar() 函数
语法:
#include <stdio.h>
int getchar( void );
getchar()函数从STDIN(标准输入)获取并返回下一个字符,如果到达文件尾返回EOF.

5。getline()函数
语法:
istream &getline( char *buffer, streamsize num );
istream &getline( char *buffer, streamsize num, char delim );
getline()函数用于输入流,读取字符到buffer中,直到下列情况发生:
num - 1个字符已经读入,
碰到一个换行标志,
碰到一个EOF,
或者,任意地读入,直到读到字符delim。delim字符不会被放入buffer中。

6。系统提供了两个对数函数,log()和log10()

log()
语法:
#include <math.h>
double log( double num );
功能: 函数返回参数num的自然对数。如果num为负,产生域错误;如果num 为零,产生范围错误。
log10 ()
语法:
#include <math.h>
double log10( double num );
功能: 函数返回参数num以10为底的对数。如果num为负,产生域错误;如果num 为零,产生范围错误。

所以要求以其他数为底的对数的话,就得依赖上面的函数转化一下,比如求2为底的对数,有两种方法:

log2(double d)=log(d)/log(2) 或者 log10(d)/log10(2)

原创粉丝点击