#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <string.h>
#include <string>
int main(){
//基础知识
//1.%g 的运用 --保留有效数字会四舍五入
float num = 21.321613;
printf("%.5g\n",num);
//有什么用呢?
//answer:输出有效数字的最大位数
//输出:21.322
//2.%s 输出c语言字符数组 但是不能直接输出string ,如何将字符数组转化为string,你需要使用string自带的构造函数。
//方法一: string str = string (10,'*'); --将字符转化为字符串string
//方法二: string str = string(arr,0,4); --数组名 起始索引 终止索引
char arr[10] = { 'I','`','m','Z','J','M' ,'\0'};
string str1 = string(10, '*');
cout << str1 << endl;
string str2 = string(arr, 3, 6);
cout << str2 << endl;
//3.%.的应用 保留n位小数,会四舍五入
double deci = 3.1415926;
printf("%.4f\n", deci);
//答案是3.1416;
//整数的话 .右边表示不够填0
//左边表示 不够向右进n-整数位数个空格
int zhenshu = 1000;
printf("%16.9d\n", zhenshu);
//输出:" 000001000"
//4.#的应用
float x1 = 0;
float x2 = 42.300;
printf("%#.0f\n", x1); //#作用为 就算后面没有小数 也会输出小数点 比如此案例 输出为"0.";
printf("%.4g\n", x2); //如果后面都是0 保留的有效数字位数多了 编译器会删除后面的0
//那么该怎么输出后面的0呢
//#可以防止编译器删掉后面的0;
printf("%#.4g\n", x2);
//%d的一些基本操作
int shu = 19;
printf("%010d\n", shu);//输出十格 不够的0来凑
//string可以直接加字符 加完了后仍然是字符串
string str0 = "JAVA";
char a = 's';
char b = 'e';
str0 = str0 + a + b;
cout << str0 << endl;
//c_str
//string类封装的一个转换的函数
//可以非常方便的将string类转化为const char*;
//第一步 我们创建个字符串
string zifuchuan = "I`m C++.JAVA";
//第二步 创建字符数组
//·1 创建一个const char *
const char* ch1 = zifuchuan.c_str();
cout <<"ch1 的写法 :" << ch1 << endl;
//·2 创建一个char *
char* ch2 =const_cast<char*>( zifuchuan.c_str());
cout << "ch2 的写法 :" << ch2 << endl;
//另一种写法 利用strcpy ,const char * 就不行 必须初始化。
char* ch3 = new char[zifuchuan.length()];
strcpy(ch3, zifuchuan.c_str());
cout << "ch3 :" << ch3 << endl;
//·3.创建一个 char ch[];
//写法一:
char ch4[100] = {};
for (int i = 0; i < zifuchuan.size(); i++) {
ch4[i] = zifuchuan[i];
}
int length = zifuchuan.size();
int k = 0;
cout << "ch4 = ";
while (length--) {
cout << ch4[k];
k++;
}
cout << endl;
//写法二:
char ch5[100] = {};
strcpy(ch5, zifuchuan.c_str());
cout << "ch5 = " << ch5;
return 0;
}