对C++中substr()、c_str()、atoi()函数的理解

substr()

substr操作返回的是一个string,它是原始string的一部分或全部的拷贝。可以传递给substr一个可选的开始位置和计数值:

string s("hello world");
string s2 = s.substr(0, 5);      //s2 = hello
string s3 = s.substr(6);         //s3 = world
string s4 = s.substr(6, 11);     //s4 = world
string s5 = s.substr(12);        //抛出一个out_of_range异常

如果开始位置超过了string的大小,则substr函数会抛出一个out_of_range异常。如果开始位置加上计数值大于string的大小,则substr会调整计数数值,只拷贝到string的末尾。

c_str()

C++中的这个函数是为了与c语言兼容,c中无string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式.

c_str是String类中的函数,它返回当前字符串的首字符地址。当需要打开一个由用户自己输入文件名的文件时,可以这样写:ifstream in(st.c_str())。

#include <iostream>
#include <string>     //使用头文件string ,否则最后cout<<无法输出 add_to
using namespace std;

int main()
{
	string add_to = "hello!";
	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;
	cout << "copy: " << copy << endl;      //copy:hello!baby
	delete [] copy;
	cout << "add_to: " << add_to << endl;  //add_to:hello!baby
	return 0;
}

atoi()

C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
参数为要转换为整数的字符串。该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   int val;
   char str[20];
   
   strcpy(str, "98993489");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val); //字符串值 = 98993489, 整型值 = 98993489

   strcpy(str, "runoob.com");
   val = atoi(str);
   printf("字符串值 = %s, 整型值 = %d\n", str, val); //字符串值 = runoob.com, 整型值 = 0

   return(0);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章