在C++里用C函数是常用的。有时分不清哪个是C哪个是C++了。
C | C++ | |
内置整形 | int、long、short、 | unsigned long、long unsigned int、int、 unsigned short(16)、short、 unsigned long(32) 、 unsigned long long(64) |
内置浮点类型 | float、double | float、double、long double |
字符串 | char name[40]; | C风格字符串 char bird[11]="Mrs Bubbles" //‘\0’ |
字符串长度 | char msg[]="this is a message"; int m_len=strlen(msg);//1.长度 |
|
拼接字符串 | defined SIZE 80; char dest[SIZE]; | string str1,str2,str3; str1=str2+str3; str1+=str2; |
复制字符串 | char char1[20]; strcpy(char1,char2);//copy char2 to char1 | |
字符串比较 | defined ANSWER "Grant" { char * ret_val; if(ret_val) while(st[i]!='\n'&&st[i]!='\0') else while(getchar()!='\n') continue; } return ret_val; puts("NO,that is wrong,try again"); } } | |
枚举 | enum spectrum{red,orange}; enum bits{one=1,two=2,eight=4} bits myflag; myflag=bits(6);//不是枚举值,但这样写没问题。 enum bigstep{frist,second=100,third} | |
指针 | int higgens=5;
char animal[20]="bear"; const char * bird="wren"; ps=new char[strlen(animal)+1]; //获取副本 | |
数组 | ||
数组的替代品 | vector<int> vi; array<int,5> ai; | |
1.vector 增删改查
#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
//1.vector 增删改查
void vector_test(void)
{
cout << "STLvector(void)";
cout<<"******//1.创建与添加 push_back(0-5)******"<<endl;
vector<int> vi;
for (int i = 0; i < 5; i++)
{
vi.push_back(i);
cout << vi[i] << ",";
}
cout << "******//2.插入insert(vi.begin()+vi.size(),6)******" << endl;
vi.insert(vi.begin()+vi.size(),6);
cout << endl;
cout << "******//3.删除 pop_back()******" << endl;
for (int i = 0; i < vi.size(); i++)
{
vi.pop_back();//3.删除
}
cout << "******删除 后 ******" << endl;
vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
for (it = vi.begin(); it != vi.end(); it++)
{
cout << *it << " ";
}
cout << endl;
cout << "******//4 批量添加 string 5个******" << endl;
vector<string> vstr(5, "ab");// 创建5个string "00"
vstr.push_back("111");
vstr.push_back("222");
for (int i = 0; i < vstr.size(); i++)
{
cout << vstr[i] << ",";
}
}
2.string 增删改查+格式化输出
#include <string>
#include <vector>
void testStr()
{
int i;
string strUp = "THIS IS A STRING";
char ch;
vector <char> vc;
cout << " strUp********************************" << endl;
cout << strUp << endl;
int len = strUp.size();
cout << len << endl;
for (i = 0; i < len; i++)
{
ch = tolower(strUp[i]);
vc.push_back(ch);
}
cout << " strLow********************************" << endl;
//vector<char>::iterator it;
for (i = 0; i < len; i++)
{
cout << vc[i];
}
cout << endl;
//iterator 访问
vector<char>::iterator it;
for (it = vc.begin(); it != vc.end(); it++)
{
cout << *it;
}
}
#include <string>
#include <vector>
string myFormat(const char* pszFmt, ...)
{
std::string str;
va_list args;
va_start(args, pszFmt);
{
int nLength = _vscprintf(pszFmt, args);
nLength += 1; //上面返回的长度是包含\0,这里加上
std::vector<char> vectorChars(nLength);
_vsnprintf(vectorChars.data(), nLength, pszFmt, args);
str.assign(vectorChars.data());
}
va_end(args);
return str;
}
void mystringFormat()
{
std::string str;
int m_int = 10;
int i = 10;
str = format("i=%c", i);
string.Format("{ 0:D2 }", 1223)
/* string.Format(”{ 0:D2 }”, 1223)// 结果为:1223,'
// 3、用分号隔开的数字,并指定小数点后的位数
string.Format(”{ 0:N }”, 14200) //结果为:14, 200.00 (默认为小数点后面两位)
string.Format(”{ 0:N3 }”, 14200.2458) //结果为:14, 200.246 (自动四舍五入)
// 4、格式化百分比
string.Format(”{ 0:P }”, 0.24583) //结果为:24.58 % (默认保留百分的两位小数)
string.Format(”{ 0:P1 }”, 0.24583) //结果为:24.6 % (自动四舍五入)
// 5、零占位符和数字占位符
string.Format(”{ 0:0000.00 }”, 12394.039)// 结果为:12394.04
string.Format(”{ 0:0000.00 }”, 194.039) //结果为:0194.04
string.Format(”{ 0:###.## }”, 12394.039) //结果为:12394.04
string.Format(”{ 0:####.# }”, 194.039) //结果为:194
string.Format(”{ 0:d }”, System.DateTime.Now) //结果为:2009 - 3 - 20 (月份位置不是03)
string.Format(”{ 0:D }”, System.DateTime.Now) //结果为:2009年3月20日
string.Format(”{ 0:f }”, System.DateTime.Now) //结果为:2009年3月20日 15:37
string.Format(”{ 0:F }”, System.DateTime.Now) //结果为:2009年3月20日 15 : 37 : 52
string.Format(”{ 0:g }”, System.DateTime.Now) //结果为:2009 - 3 - 20 15 : 38
string.Format(”{ 0:G }”, System.DateTime.Now) //结果为:2009 - 3 - 20 15 : 39 : 27
string.Format(”{ 0:m }”, System.DateTime.Now) //结果为:3月20日
string.Format(”{ 0:t }”, System.DateTime.Now) //结果为:15 : 41
string.Format(”{ 0:T }”, System.DateTime.Now) //结果为:15 : 41 : 50
}
int main()
{
string str="abc";
cout<<"size: "<<str.size()<<endl;
cout<<"length: "<<str.length()<<endl;
cout<<"sizeof(str): "<<sizeof(str)<<endl;
string a="a";
cout<<"sizeof(a): "<<sizeof(a)<<endl;
}
#size: 3
#length: 3
#sizeof(str): 32
#sizeof(str): 32