C++ 將字串和陣列拼接起來
參考:https://blog.csdn.net/PROGRAM_anywhere/article/details/63720261
java中的String類,連線字元和數字僅需一個+號,但c++中的string類,+號只能用於連線兩個string型別的字元,如需連線字元和數字,則需自己寫程式來實現
參考博文中給出了四種方式,分別利用了不同的c++函式和特性
//c風格
//使用sprintf()函式,將多個不同型別的變數輸入到char型陣列中
//sprintf()函式中第一個引數就是指向要寫入的那個字串的指標,剩下的和printf()一樣
#include <stdio.h>
void test() {
char *s = "doing";
int a = 52;
float b = .1314;
char *buf = new char[strlen(s) + sizeof(a) + 1];
sprintf(buf, %s%d%.4f, s, a, b);
printf(%s\n, buf);
}
//半c半c++風格
//itoa()函式可將數字轉化為字串(char型別陣列),再用+號將原字元與數字字串連線起來
//itoa()函式有三個引數,1、要轉換的數字;2、要寫入轉換結果的目標字串;3、轉換數字時所用的基數(2-36進位制)
//itoa()函式並不是標準的C函式,它是Windows特有的,若要寫跨平臺的程式,需用sprintf()函式
//_itoa_s()函式,c++11版本後,如VS2013版本以後對該函式進行了修改,並定義了更加安全穩定的介面_itoa_s(),使用方法同itoa()函式一樣
#include <stdlib.h>;//或
#include <cstdlib>;
#include <iostream>
using namespace std;
void test1() {
string s = "dong";
int a = 520;
char *buf = new char[10];
_itoa_s(a, buf, 10);
cout << s + buf << " | ";
_itoa_s(a, buf, 16);
cout << s + buf << endl;
}
//純c++風格
//字串流,ostringstream , 由ostream派生而來,提供寫string的功能
//ostringstream的一個常見用法是,在多種資料型別之間實現轉換或格式化
#include <iostream>
#include <sstream>
void test2()
{
string s = "陳明東";
int a = 52;
double b = .1314;
ostringstream oss;
oss << s << a << b;//將s、a、b寫入oss流中
cout << oss.str() << endl;//列印oss中儲存的string型別物件
}
//C++11新特性
//std::to_string()是C++標準(2011年)的最新版本引入的全域性函式,可將其他型別轉換為string
#include <iostream>
#include <string>
void test3()
{int a = 520;
float b = 5.20;
string str = "dong";
string res = str + to_string(a);
cout << res << endl;
res = str + to_string(b);
res.resize(8);
cout << res << endl;
}