天天看点

C/C++之string类小结

参考链接: C++ strtoll()

(1)C++字符串和C字符串的转换 

         C++提供了三种方法可以将C++字符串转化为C字符串,分别是data(),c_str(),copy()成员函数来实现。 

         1)data()是以字符数组的形式返回字符串内容,但并不添加‘\0’; 

          2)c_str()生成一个const char*指针,指向一个空字符的数组,数组中的数据是临时的,当有一个改变这些数据的成员函数被调用时,数据就会失效(比如说调用c_str()之后字符串发生变化,则c_str()生成的指针指向的数据也会发生变化) 

         3)copy(p,n,size_type_off=0)表明从string类型对象中至多复制n个字符到字符指针p指向的空间,默认指定位置开始(0),返回真正从对象中复制的字符。(p中一定要确保能够存储n个字符)。 

(2)string和int类型的相互转换 

          1)int类型转换为string类型 

                  a)可以通过数据流借助缓冲区的概念 

                  b)借助snprintf()函数 

                  int snprintf(char*str,size_t size,const char*format,...);//后面主要的是可变参数,是一些变换的格式和对应需要变换的对象 

                   功能:如果格式化字符长度小于size,则全部复制,并在末尾添‘\0’;如果大于size,则只复制其中的size-1,并在末尾添零;函数成功返回写入字符串的长度,失败返回负值; 

          2)string类型转化成int类型 

                 使用strtol(str to long),strtoll(str to long long),strtoul(str to unsigned long),strtoull(str to unsigned long long)函数 

                 long int strtol(const char*nptr,char**endptr,int base); 

                  实现字符串nptr根据base转换成各种类型;参数base的范围为2~36或0,如果参数指定为0,则会根据具体情况判断进制,如果前面的字符是0x则为16进制,如果是0则为八进制,否则为10进制;函数执行过程中会扫描参数nptr字符串,跳过前面的空格式串,直到遇上数字或正负号开始转换,遇到非法数字或字符串结束时结束转换,endptr返回的是遇到不合条件返回的字符串,如果正常则为空;