對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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章