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