字符串拼接大全


字符串拼接大全
一、c語言字符串拼接函數
頭文件包含#include<string.h>
函數原型:char *strcat(char *dest, const char *src);
參數:dest 為目標字符串指針,src 為源字符串指針。
strcat() 會將參數 src 字符串復制到參數 dest 所指的字符串尾部;dest 最后的結束字符 NULL 會被覆蓋掉,並在連接后的字符串的尾部再增加一個 NULL。
返回值:返回dest 字符串起始地址。
note:dest 與 src 所指的內存空間不能重疊,且 dest 要有足夠的空間來容納要復制的字符串。
舉例:
#include <stdio.h>
#include <string.h>
int main ()
{
    char str[80];
    strcpy (str,"these ");
    strcat (str,"strings ");
    strcat (str,"are ");
    strcat (str,"concatenated.");
    puts (str);
    return 0;
}

  

二、c語言格式化字符串函數
頭文件:#include <stdio.h>
原型: int sprintf(char *str, char * format [, argument, ...]);
參數:str為要寫入的字符串;format為格式化字符串,與printf()函數相同;argument為變量。
返回值:成功則返回參數str 字符串長度,失敗則返回-1,錯誤原因存於errno 中。
注意:
除了前兩個參數類型固定外,后面可以接任意多個參數。而它的精華,顯然就在第二個參數格式化字符串上。 printf()和sprintf()都使用格式化字符串來指定串的格式,在格式串內部使用一些以“%”開頭的格式說明符(format specifications)來占據一個位置,在后邊的變參列表中提供相應的變量,最終函數就會用相應位置的變量來替代那個說明符,產生一個調用者想要的字符串。
sprintf()最常見的應用之一莫過於把整數打印到字符串中,如:
sprintf(s, "%d", 123); //把整數123打印成一個字符串保存在s中
sprintf(s, "%8x", 4567); //小寫16進制,寬度占8個位置,右對齊
sprintf的作用是將一個格式化的字符串輸出到一個目的字符串中,而printf是將一個格式化的字符串輸出到屏幕。sprintf的第一個參數應該是目的字符串,如果不指定這個參數,執行過程中出現 "該程序產生非法操作,即將被關閉...."的提示。
sprintf()會根據參數format 字符串來轉換並格式化數據,然后將結果復制到參數str 所指的字符串數組,直到出現字符串結束('\0')為止。關於參數format 字符串的格式請參考printf()。
 
三、c++ std::string類
1.append
2.運算符+
舉例:
void StringAdd(string& des,string src)
{
	des += src;
}
void StringAppend(string& des,string src)
{
	des.append(src);
}

這兩種方法實現拼接,但是拼接的只能是字符串,不能是其他類型,如果拼接其他類型則顯得不靈活。

四、c++ 11 to_string
std標准在c++11中提供了std::to_string系列函數,借助這個函數加上string+運算符可以輕松實現字符串拼接
五、c++字符串流
舉例:
#include <sstream>

std::ostringstream s;
string str1 ="abc";
int iNum = 100;
s<<str1<<"sdfal;dk;asld,"<<iNum;
str1 = s.str();

 任意類型拼接,不怕越界和溢出,安全可靠。

六、boost庫 boost::lexical_cast
舉例:
#include <boost/lexical_cast.hpp>
std::string query("select logged from login where id = " + boost::lexical_cast<std::string>(ClientID));

 

七、boost format方法
關於各大字符串拼接方法效率比較


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM