C++-C(0)-字符串-vector-string-基本操作

在C++里用C函数是常用的。有时分不清哪个是C哪个是C++了。

 

CC++
内置整形

int、long、short、
unsigned、char、

unsigned long、long

unsigned int、int、

unsigned short(16)、short、
unsigned char、signed char

unsigned long(32) 、 unsigned long long(64)

 

内置浮点类型float、doublefloat、double、long double
字符串

char name[40];
int size,letters;
float weight;
printf("%s","what is your name?\n");
scanf("%s",name);             //输入名字
printf("%s","what is your weight?\n",name);
scanf("%f",&weight);          //输入体重
size=sizeof(name);
letters=strlen(name);
printf("well,%s your volume is  %2.2f feet \n",name,volume);//格式化输出

C风格字符串
char dog[3]={'a','b','c',};
char cat[4]={'a','b','c','\0'};//字符串 string
 

char bird[11]="Mrs Bubbles"        //‘\0’
char fish[]="Bubbles"                  //compiler count

string str="panther";
 

字符串长度

char msg[]="this is a message";

int m_len=strlen(msg);//1.长度
 



int len1=str1.size();        //sizeof()(有'\0',)
int len2=strlen(char2); //strlen()(可见字符,无'\0',)


char c[]="adifgao";
int m_sizec=sizeof(c):    //7

char * pc="adjfgih";
int mp_size=sizeof(pc);   //4 数据类型长度
int mp_len=strlen(pc);     //7 字符串长度


char *pnewc= new char [1024];
int mp_newsize=sizeof(pnewc): //
 

拼接字符串

defined SIZE 80;

char dest[SIZE];
char src[]="s smell like old shoes";
strcat(dest,src);
strncat(dest,src,len);

string  str1,str2,str3;
str1=str2+str3;
str1+=str2;
 
复制字符串

char char1[20];
char char2[20]="abcde";

strcpy(char1,char2);//copy char2 to char1
strcat(char1,char2);//append char2 to char1

字符串比较

defined ANSWER "Grant"
defined SIZE      40
char *s_gets(char* st,int n);
char *s_gets(char* st,int n)

{

char * ret_val;
int i=0;
ret_val=fgets(st,n,stdin);

if(ret_val)
{

while(st[i]!='\n'&&st[i]!='\0')
  i++;
  if(st[i]=='\n') st[i]='\0';

  else while(getchar()!='\n')

       continue;

}

return ret_val;

}
viod main()
{
     char c1[SIZE]; 
     puts("who is buried in Grant tomb?");
     s_gets(c1,SIZE);
     while(strcmp(c1,ANSWER)!=0)
    {

       puts("NO,that is wrong,try again");

     }

}

strcmp(c1,ANSWER)// 0 -1 1
strcpy()
strncpy()
sprintf()
 

枚举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;
int *pt=&higgens;


int *pt=new int ;
*pt=1001;
delete pt;


short *ps= new short[500];
delete [] ps;


//动态数组
int *psome =new int[10];
psome[0]=0.2;
psome[1]=0.3;
..
delete [] psome;

char animal[20]="bear";

const char * bird="wren";
char *ps;

ps=new char[strlen(animal)+1];  //获取副本
strcpy(ps,animal);





 

数组
数组的替代品

vector<int> vi;

array<int,5> ai;
array<double,4> ad={1.2,2.1,3.43,4.4};
array<typename,n_elem> arr;

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



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值