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);
}