基本问题2
1:string字符串如何读取带空格的字符串,char型字符串如何读取带空格的字符串
读取string字符串
int main()
{
string str1;
getline(cin,str1);
cout<<str1<<endl;
system("pause");
return 0;
}
读取char型字符串
int main()
{
char arr[20];
cin.getline(arr,19);
cout<<arr<<endl;
system("pause");
return 0;
}
注意:使用cin.getline(arr,20),如果前面有输入,需要使用getchar()吸收前面的空格
2:共用体的使用
union u
{
int k;
char c;
};
int main()
{
u u1;
u1.c='a';
cout<<u1.c<<endl;
system("pause");
return 0;
}
3:枚举的使用
#include <iostream>
#include "stdlib.h"
#include <string.h>
#include <string>
#include <cstring>
#include <fstream>
#include <sstream>
#include <math.h>
using namespace std;
enum enum1
{
c1,
c2
};
int main()
{
enum1 e1=c2;
cout<<e1<<endl;
system("pause");
return 0;
}
4:数字和字符的转换(数字5转成字符5,字符7转成数字7)
#include <iostream>
#include "stdlib.h"
#include <string.h>
#include <string>
#include <cstring>
#include <fstream>
#include <sstream>
#include <math.h>
using namespace std;
int main()
{
int k=5;
char c=k+48;
cout<<c<<endl;
char c2='7';
int k2=c2-48;
cout<<k2<<endl;
system("pause");
return 0;
}
5:给指针字符串数组赋值 char *arr[num]=?
#include <iostream>
#include "stdlib.h"
#include <string.h>
#include <string>
#include <cstring>
#include <fstream>
#include <sstream>
#include <math.h>
using namespace std;
const int num=5;
int main()
{
char *arr[num]={"123","456","789","",""};
for(int i=0;i<num;i++)
{
cout<<arr[i]<<endl;
}
system("pause");
return 0;
}
6:给指针字符串赋值,手动输入和初始化两种方式
手动输入:
#include <iostream>
#include "stdlib.h"
#include <string.h>
#include <string>
#include <cstring>
#include <fstream>
#include <sstream>
#include <math.h>
using namespace std;
int main()
{
char *arr;
arr=new char[20];
cin>>arr;
cout<<arr<<endl;
delete [] arr;
system("pause");
return 0;
}
初始化:
int main()
{
char *k;
char arr[5]="123";
k=arr;
cout<<k<<endl;
system("pause");
return 0;
}
7:字母的大小写转换
string字符串中字母大小写转换
int main()
{
string str;
int len;
int i;
cin>>str;
len=str.size();
for(i=0;i<len;i++)
{
str[i]=toupper(str[i]);//小写转大写
//str[i]=tolower(str[i]);//大写转小写
}
cout<<str<<endl;
system("pause");
return 0;
}
char型数组大小写转换
int main()
{
char arr[10];
cin.getline(arr,9);
int len=strlen(arr);
int i;
for(i=0;i<len;i++)
{
arr[i]=toupper(arr[i]);
}
cout<<arr<<endl;
system("pause");
return 0;
}
8:判断int型数据输入是否为int
int main()
{
int i;
cin>>i;
if(cin.fail())
{
cout<<"input error"<<endl;
}
else
{
cout<<"yes"<<endl;
}
system("pause");
return 0;
}
9:为结构体数组赋值
创建的时候初始化赋值:
struct struct1
{
char name[20];
int level;
};
int main()
{
struct1 stu[3]={
{"wucun1",1},
{"wucun2",2},
{"wucun3",3}
};
cout<<stu[0].name<<" "<<stu[0].level<<endl;
cout<<stu[1].name<<" "<<stu[1].level<<endl;
cout<<stu[2].name<<" "<<stu[2].level<<endl;
system("pause");
return 0;
}
创建后初始化赋值
struct struct1
{
char name[20];
int level;
};
int main()
{
struct1 stu[3];
strcpy_s(stu[0].name,"wucun1");
strcpy_s(stu[1].name,"wucun2");
strcpy_s(stu[2].name,"wucun3");
stu[0].level=1;
stu[1].level=2;
stu[2].level=3;
cout<<stu[0].name<<" "<<stu[0].level<<endl;
cout<<stu[1].name<<" "<<stu[1].level<<endl;
cout<<stu[2].name<<" "<<stu[2].level<<endl;
system("pause");
return 0;
}
10:为结构体指针赋值
为一个结构体指针赋值
struct struct1
{
char name[20];
int level;
};
int main()
{
struct1 *stu;
//stu=(struct1 *)malloc(sizeof(struct1)); 可以使用malloc或new分配内存
stu=new struct1;
strcpy_s(stu->name,"wucun1");
stu->level=1;
cout<<stu->name<<" "<<stu->level<<endl;
delete stu;
system("pause");
return 0;
}
为结构体指针数组赋值
struct struct1
{
char name[20];
int level;
};
int main()
{
struct1 *stu[3];
stu[0]=new struct1;
stu[1]=new struct1;
stu[2]=new struct1;
strcpy_s(stu[0]->name,"wucun1");
strcpy_s(stu[1]->name,"wucun2");
strcpy_s(stu[2]->name,"wucun3");
stu[0]->level=1;
stu[1]->level=2;
stu[2]->level=3;
cout<<stu[0]->name<<" "<<stu[0]->level<<endl;
cout<<stu[1]->name<<" "<<stu[1]->level<<endl;
cout<<stu[2]->name<<" "<<stu[2]->level<<endl;
delete stu[0];
system("pause");
return 0;
}
11:字符串数字转换
字符串转数字
int str2num(string s)
{
int num;
stringstream ss(s);
ss>>num;
return num;
}
int main()
{
string str1="123";
int n=str2num(str1);
cout<<n<<endl;
system("pause");
return 0;
}
数字转字符串
string num2str(double i)
{
stringstream ss;
ss<<i;
return ss.str();
}
int main()
{
double n;
cin>>n;
string str=num2str(n);
cout<<str<<endl;
system("pause");
return 0;
}
12:string字符串赋值字符数组
int main()
{
string str1="abcde";
char arr[10];
int len=str1.size();
int i;
for(i=0;i<len;i++)
{
arr[i]=str1[i];
}
arr[len]='\0';
cout<<arr<<endl;
system("pause");
return 0;
}
13:指针数组arr[k],cin赋值后,自动为末尾添加’\0’,所以strlen(arr)不一定等于k
int main()
{
char arr[10];
cin.getline(arr,9);
int len=strlen(arr);
cout<<len<<endl;
system("pause");
return 0;
}