作业:
- 定义自己的命名空间,其中有string类型的变量,再定义两个函数,一个函数完成字符串的输入,一个函数完成求字符串长度,再定义一个全局函数完成对该字符串的反转
#include <iostream>
#include <cstring>
using namespace std;
namespace A{void fun1(string s1);
}
void A::fun1(string s1){cout<<s1<<endl;
}
void fun2(char arr[],int len){for(int i=0;i<len/2;i++){int temp;temp=arr[i];arr[i]=arr[len-i-1];arr[len-i-1]=temp;}
for(int i=0;i<len;i++){cout<<arr[i];
}
}
using namespace A;
int main()
{string s1="";cout<<"请输入字符串"<<endl;cin>>s1;fun1(s1);char arr[32]="";strcpy(arr,s1.data());int len=s1.size();fun2(arr,len);return 0;
}
一、第一个C++程序
1.cout输出流对象
cout控制格式输出,只能输出十六进制、八进制和十进制
//输出a的16进制cout << "a的十六进制:" << hex << a << endl;
cout << setbase(16) << a << endl; //输出十六进制cout << "右对齐四个宽度输出a: " << dec << setw(4) << a << endl;cout << "左对齐四个宽度输出a: " << setw(4) << left << a << endl;cout << "b指定小数点后4位输出" << setprecision(4) << b << endl; //4位包含小数点
2.cin输入流对象
//使用cin输入三个变量cin >> a;cin >> c;cin >> b;
二、命名空间
命名空间只能定义全局处/其他命名空间中
1.在命名空间中声明函数
#include <iostream>
using namespace std;namespace A
{int a=100;void fun(); //在命名空间A中存放了函数声明
}//命名空间中声明,命名空间外定义
//需要加上命名空间名和域限定符限定是哪一个命名空间中的函数
void A::fun()
{cout << "test" << endl;
}int main()
{std::cout << A::a << endl;A::fun(); //testreturn 0;
}
2.命名空间冲突的解决
如果导入了命名空间中和全局变量冲突的标识符时,后续访问该标识符会报错
访问命名空间中的标识符: 命名空间名::标识符名
访问全局变量: ::标识符名; (全局变量,默认在程序的匿名空间中)
三、string字符串
c++中将字符串封装乘string类,后续可以用string定义字符串变量
1.string类
#include <iostream>
using namespace std;
int main()
{string s1 = "hello"; //定义了一个字符串s1并赋值为hellocout << "s1=" << s1 << endl;string s2(3,'a'); //定义了一个字符串s2并使用3个a初始化cout << "s2=" << s2 << endl;string s3(s1); //定义了一个字符串s3使用s1初始化cout << "s3=" << s3 << endl;string s4("hi"); //定义了一个字符串s4使用hi初始化cout << "s4=" << s4 << endl;cout << "s1+s2 = " << s1+s2 << endl; //将s1和s2拼接到一起s4 = s1+s2;cout << "s4 = " << s4;return 0;
}
2. c字符串与c++字符串的转化
#include <iostream>
#include <cstring>
using namespace std;//需要使用c_str函数和data函数玩长城C++风格向C风格的转换
int main()
{string s1 = "hello"; //定义了一个字符串s1并赋值为hellochar str[100];strcpy(str,s1.c_str());cout << str << endl;string s2 = " world";strcat(str,s2.data());cout << str << endl;string s3 = str; //C风格字符串可以直接给string类型赋值cout << s3 << endl;cout << (s3>s2) << endl;//string类型可以直接进行比较无需调用strcmp函数,运算符重载return 0;
}
3.string类中的函数
1.at()
cout<<s1.at(100)<<endl;
2.size()/length()
s1.size()
s1.length()
3.empty()/clear()
s1.empty:对字符串判空
s1.clear:清空字符串
4.字符串的判断
可以直接使用!=,==,>,>=····运算符直接判断字符串间的关系
四、bool类型
- bool类型的默认值,0/false
- bool的大小,1Byte(内存分配的最小单位是Byte)
- bool类型的赋值,可以直接使用true和false赋值,可以用数值直接赋值
- bool输出,默认以数字形式输出,如果想用单词形式输出,需要加上boolalpha,恢复数字形式,加上noboolalpha