第二章 string对象

合集下载

自考C++程序设计 总复习

自考C++程序设计 总复习

输出一个换行符 清除flag标志位 清除flag标志位 设置ch为填充字符 设置浮点数输出精度 设置输出字符间字段宽度
输出 输出 输出 输出 输出 输出
常量名 Ios_base :: left Ios_base ::right Ios_base ::showpoint Ios_base ::showpos Ios_base ::scientific Ios_base ::fixed
(2)析构函数在对象的生存期结束时被主动调用。类得对象数组的每个元素调用一次构造函 数。 (3)析构函数和运算符delete:当使用delete删除一个动态对象时,它首先为这个动态对象调 用析构函数,然后再释放这个动态对象占用的内存。这和使用new建立动态对象的过程刚好相 反。 5.成员函数重载及默认函数 (1)this指针:c++规定当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参 数是一个指向调用该函数的指针,从而使成员函数知道该对那个对象进行操作。 (2)this指针是c++实现封装的一种机制,它将该对象调用的成员函数连接在一起,在外部看 来,每一个对象都拥有自己的成员函数。一般情况下都省略符号“this->”,而让系统进行默认 设置。 6.一个类的对象作为另一个类的成员 (1)类本身就是一种新的数据类型,所以一个类可以作为另一个类得成员。
(7)当使用new建立一个动态对象,new首先分配足够对象的内存,然后自动构造函数来初始 化这块内存,再返回这个动态对象的地址。 (8)构造函数的默认参数:如果程序定义自己的有参构造函数,又想使用无参数形式的构造 函数,那么就是吧构造函数使用默认参数设计。 (9)复制构造函数:引用在类中一个很重要的用途是用在复制构造函数中。这一类特殊而且 重要的函数通常用于使自己已有的对象来建立一个新对象。复制构造函数原型如下:类名:: 类名(const 类名 &) 4.析构函数 (1)析构函数析构函数的名称和类名一样,为了与构造函数区分在析构函数前面加~符号。析 构函数不能定义任何返回类型,即使指定为void也不行。一般形式如下:类名::~类名 (void)

C++--primer-plus-(第6版)-中文版编程练习答案

C++--primer-plus-(第6版)-中文版编程练习答案

第二章:开始学习C++//ex2.1--display your name and address#include<iostream>int main(void){using namespace std;cout<<"My name is liao chunguang and I live in hunan chenzhou.\n”;}//ex2.2--convert the furlong units to yard uints-把浪单位换位码单位#include<iostream>double fur2yd(double);int main(){using namespace std;cout<<"enter the distance measured by furlong units:";double fur;cin>>fur;cout<<"convert the furlong to yard"<<endl;double yd;yd=fur2yd(fur);cout<<fur<<" furlong is "<<yd<<" yard"<<endl;return 0;}double fur2yd(double t){return 220*t;}//ex2.3-每个函数都被调用两次#include<iostream>void mice();void see();using namespace std;int main(){mice();mice();see();see();return 0;}void mice(){cout<<"three blind mice"<<endl;}void see(){cout<<"see how they run"<<endl;}//ex2.4#include<iostream>int main(){using namespace std;cout<<"Enter your age:";int age;cin>>age;int month;month=age*12;cout<<age<<" years is "<<month<<" months"<<endl;return 0;}//ex2.5---convert the Celsius valve to Fahrenheit value#include<iostream>double C2F(double);int main(){using namespace std;cout<<"please enter a Celsius value:";double C;cin>>C;double F;F=C2F(C);cout<<C<<" degrees Celsius is "<<F<<" degrees Fahrenheit."<<endl;return 0;}double C2F(double t){return 1.8*t+32;}//ex2.6---convert the light years valve to astronomical units--把光年转换为天文单位#include<iostream>double convert(double);//函数原型int main(){using namespace std;cout<<"Enter the number of light years:";double light_years;cin>>light_years;double astro_units;astro_units=convert(light_years);cout<<light_years<<" light_years = "<<astro_units<<" astronomical units."<<endl; return 0;}double convert(double t){return 63240*t;//1 光年=63240 天文单位}//ex2.7--显示用户输入的小时数和分钟数#include<iostream>void show();main(){using namespace std;show();return 0;}void show(){using namespace std;int h,m;cout<<"enter the number of hours:";cin>>h;cout<<"enter the number of minutes:";cin>>m;cout<<"Time:"<<h<<":"<<m<<endl;}第三章:处理数据//ex3.1—将身高用英尺(feet)和英寸(inch)表示#include<iostream>const int inch_per_feet=12;// const 常量--1feet=12inches--1 英尺=12 英寸int main(){using namespace std;cout<<"please enter your height in inches:___\b\b\b";// \b 表示为退格字符int ht_inch;cin>>ht_inch;int ht_feet=ht_inch/inch_per_feet;//取商int rm_inch=ht_inch%inch_per_feet;//取余cout<<"your height is "<<ht_feet<<" feet,and "<<rm_inch<<" inches\n";return 0;}//ex3.2--计算相应的body mass index〔体重指数〕#include<iostream>const int inch_per_feet=12;const double meter_per_inch=0.0254;const double pound_per_kilogram=2.2;int main(){using namespace std;cout<<"Please enter your height:"<<endl;cout<<"First,enter your height of feet part〔输入你身高的英尺部分〕:_\b"; int ht_feet;cin>>ht_feet;cout<<"Second,enter your height of inch part〔输入你身高的英寸部分〕:_\b"; int ht_inch;cin>>ht_inch;cout<<"Now,please enter your weight in pound:___\b\b\b";double wt_pound;cin>>wt_pound;int inch;inch=ht_feet*inch_per_feet+ht_inch;double ht_meter;ht_meter=inch*meter_per_inch;double wt_kilogram;wt_kilogram=wt_pound/pound_per_kilogram;cout<<endl;cout<<"Your pensonal body information as follows:"<<endl;cout<<"身高:"<<inch<<"(英尺inch)\n"<<"身高:"<<ht_meter<<"(米meter)\n"<<"体重:"<<wt_kilogram<<"(千克kilogram)\n";double BMI;BMI=wt_kilogram/(ht_meter*ht_meter);cout<<"your Body Mass Index(体重指数) is "<<BMI<<endl;return 0;}//ex3.3 以度,分,秒输入,以度输出#include<iostream>const int minutes_per_degree=60;const int seconds_per_minute=60;int main(){using namespace std;cout<<"Enter a latitude in degrees,minutes,and seconds:\n";cout<<"First,enter the degrees:";int degree;cin>>degree;cout<<"Next,enter the minutes of arc:";int minute;cin>>minute;cout<<"Fianlly,enter the seconds of arc:";int second;cin>>second;double show_in_degree;show_in_degree=(double)degree+(double)minute/minutes_per_degree+(double)second/mi nutes_per_degree/seconds_per_minute;cout<<degree<<" degrees,"<<minute<<" minutes,"<<second<<"seconds="<<show_in_degree<<" degrees\n";return 0;}//ex3.4#include<iostream>const int hours_per_day=24;const int minutes_per_hour=60;const int seconds_per_minute=60;int main(){using namespace std;cout<<"Enter the number of seconds:";long seconds;cin>>seconds;int Day,Hour,Minute,Second;Day=seconds/seconds_per_minute/minutes_per_hour/hours_per_day;Hour=seconds/seconds_per_minute/minutes_per_hour%hours_per_day;Minute=seconds/seconds_per_minute%minutes_per_hour;Second=seconds%seconds_per_minute;cout<<seconds<<"seconds = "<<Day<<" days,"<<Hour<<" hours,"<<Minute<<" minutes,"<<Second<<" seconds\n";return 0;}//ex3.5#include<iostream>int main(){using namespace std;cout<<"Enter the world population:";long long world_population;cin>>world_population;cout<<"Enter the population of the US:";long long US_population;cin>>US_population;double percentage;percentage=(double)US_population/world_population*100;cout<<"The population of the US is "<<percentage<<"% of the world population.\n"; return 0;}//ex3.6 汽车耗油量-美国(mpg)or 欧洲风格(L/100Km)#include<iostream>int main(){using namespace std;cout<<"Enter the miles of distance you have driven:";double m_distance;cin>>m_distance;cout<<"Enter the gallons of gasoline you have used:";double m_gasoline;cin>>m_gasoline;cout<<"Your car can run "<<m_distance/m_gasoline<<" miles per gallon\n";cout<<"Computing by European style:\n";cout<<"Enter the distance in kilometers:";double k_distance;cin>>k_distance;cout<<"Enter the petrol in liters:";double k_gasoline;cin>>k_gasoline;cout<<"In European style:"<<"your can used "<<100*k_gasoline/k_distance<<" liters of petrol per 100 kilometers\n";return 0;}//ex3.7 automobile gasoline consumption-耗油量--欧洲风格(L/100Km)转换成美国风格(mpg) #include<iostream>int main(){using namespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"European style(liters per 100 kilometers):";double Euro_style;cin>>Euro_style;cout<<"Converts to U.S. style(miles per gallon):"<<endl;cout<<Euro_style<<" L/100Km = "<<62.14*3.875/Euro_style<<" mpg\n";return 0;}// Note that 100 kilometers is 62.14 miles, and 1 gallon is 3.875 liters.//Thus, 19 mpg is about 12.4 L/100Km, and 27 mpg is about 8.7 L/100Km.Enter the automobile gasoline consumption figure inEuropean style(liters per 100 kilometers):12.4Converts to U.S. style(miles per gallon):12.4 L/100Km = 19.4187 mpgPress any key to continue// ex3.7 automobile gasoline consumption-耗油量--美国风格(mpg)转换成欧洲风格(L/100Km)#include<iostream>int main(){using namespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"U.S. style(miles per gallon):";double US_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl;cout<<US_style<<" mpg = "<< 62.14*3.875/US_style<<"L/100Km\n";return 0;}// Enter the automobile gasoline consumption figure inU.S. style(miles per gallon):19Converts to European style(miles per gallon):19 mpg = 12.6733L/100KmPress any key to continue第四章复合类型//ex4.1 display the information of student#include<iostream>const int Asize=20;using namespace std;struct student//定义结构描述{char firstname[Asize];char lastname[Asize];char grade;int age;};void display(student);//函数原型放在结构描述后int main(){cout<<"what is your first name?"<<endl;student lcg;//创建结构变量〔结构数据对象〕cin.getline(lcg.firstname,Asize);cout<<"what is your last name?"<<endl;cin.getline(stname,Asize);cout<<"what letter grade do you deserve?"<<endl;cin>>lcg.grade;cout<<"what is your age?"<<endl;cin>>lcg.age;display(lcg);return 0;}void display(student name){cout<<"Name: "<<name.firstname<<","<<stname<<endl;cout<<"Grade:"<<char(name.grade+1)<<endl;cout<<"Age:"<<name.age<<endl;}//ex4.2 use the string-class instead of char-array#include<iostream>#include<string>int main(){using namespace std;string name,dessert;cout<<"Enter your name: \n";getline(cin,name);cout<<"Enter your favorite dessert: \n";getline(cin,dessert);cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";return 0;}//有时候会遇到需要按下两次回车键才能正确的显示结果,这是vc++6.0 的一个BUG,更改如下:else if (_Tr::eq((_E)_C, _D)){_Chg = true;_I.rdbuf()->sbumpc();//修改后的break; }ex4.3 输入其名和姓,并组合显示#include<iostream>#include<cstring>const int Asize=20;int main(){using namespace std;char fname[Asize];char lname[Asize];char fullname[2*Asize+1];cout<<"Enter your first name:";//输入名字,存储在fname[]数组中cin.getline(fname,Asize);cout<<"Enter your last name:";//输入姓,存储在lname[]数组中cin.getline(lname,Asize);strncpy(fullname,lname,Asize);//把姓lname 复制到fullname 空数组中strcat(fullname,", ");//把“,”附加到上述fullname 尾部strncat(fullname,fname,Asize);//把fname 名字附加到上述fullname 尾部fullname[2*Asize]='\0';//为防止字符型数组溢出,在数组结尾添加结束符cout<<"Here's the information in a single string:"<<fullname<<endl;//显示组合结果return 0;}#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstring>const int Asize = 20;int main(){using namespace std;char firstname[Asize];char lastname[50];cout << "Enter your first name: ";cin.getline(firstname,Asize);cout << "Enter your last name: ";cin.getline(lastname,50);strcat(lastname,", ");strncat(lastname,firstname,Asize);cout << "Here's the information in a single string: "<< lastname <<endl;return 0;}//ex4.4 使用string 对象存储、显示组合结果#include<iostream>#include<string>int main(){using namespace std;string fname,lname,attach,fullname;cout<<"Enter your first name:";getline(cin,fname);//note:将一行输入读取到string 类对象中使用的是getline(cin,str) //它没有使用句点表示法,所以不是类方法cout<<"Enter your last name:";getline(cin,lname);attach=", ";fullname=lname+attach+fname;cout<<"Here's the information in a single string:"<<fullname<<endl;return 0;}//ex4.5 declare a struct and initialize it 声明结果并创建一个变量#include<iostream>const int Asize=20;struct CandyBar{char brand[Asize];double weight;int calory;};int main(){using namespace std;CandyBar snack={"Mocha Munch",2.3,350};cout<<"Here's the information of snack:\n";cout<<"brand:"<<snack.brand<<endl;cout<<"weight:"<<snack.weight<<endl;cout<<"calory:"<<snack.calory<<endl;return 0;}//ex4.6 结构数组的声明及初始化#include<iostream>const int Asize=20;struct CandyBar{char brand[Asize];double weight;int calory;};int main(){using namespace std;CandyBar snack[3]={{"Mocha Munch",2.3,350},{"XuFuJi",1.1,300},{"Alps",0.4,100}};for(int i=0;i<3;i++)//利用for 循环来显示snack 变量的内容{cout<<snack[i].brand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}//ex4.7 pizza 披萨饼#include<iostream>#include<string>const int Size=20;struct pizza//声明结构{char company[Size];double diameter;double weight;};int main(){using namespace std;pizza pie;//创建一个名为pie 的结构变量cout<<"What's the name of pizza company:";cin.getline(pie pany,Size);cout<<"What's the diameter of pizza:";cin>>pie.diameter;cout<<"What's the weight of pizza:";cin>>pie.weight;cout<<"company:"<<pie pany<<endl;cout<<"diameter:"<<pie.diameter<<"inches"<<endl;cout<<"weight:"<<pie.weight<<"ounches"<<endl;return 0;}//ex4.8 pizza pie 披萨饼使用new 创建动态结构#include<iostream>#include<string>const int Size=20;struct pizza//声明结构{char company[Size];double diameter;double weight;};int main(){using namespace std;pizza *pie=new pizza;//使用new 创建动态结构cout<<"What's the diameter of pizza:";cin>>pie->diameter;cin.get();//读取下一个字符cout<<"What's the name of pizza company:";cin.get(pie->company,Size);cout<<"What's the weight of pizza:";cin>>pie->weight;cout<<"diameter:"<<pie->diameter<<" inches"<<endl;cout<<"company:"<<pie->company<<endl;cout<<"weight:"<<pie->weight<<" ounches"<<endl;delete pie;//delete 释放内存return 0;}//ex.4.9 使用new 动态分配数组—方法1#include<iostream>#include<string>using namespace std;struct CandyBar{string brand;double weight;int calory;};int main(){CandyBar *snack= new CandyBar[3];snack[0].brand="A";//单个初始化由new 动态分配的内存snack[0].weight=1.1;snack[0].calory=200;snack[1].brand="B";snack[1].weight=2.2;snack[1].calory=400;snack[2].brand="C";snack[2].weight=4.4;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}//ex.4.10 数组—方法1#include <iostream>int main(){using namespace std;const int Size = 3;int success[Size];cout<<"Enter your success of the three times 40 meters running:\n"; cin >> success[0]>>success[1]>>success[2];cout<<"success1:"<<success[0]<<endl;cout<<"success2:"<<success[1]<<endl;cout<<"success3:"<<success[2]<<endl;double average=(success[0]+success[1]+success[2])/3;cout<<"average:"<<average<<endl;return 0;}//ex.4.10 array—方法2#include <iostream>#include <array>int main(){using namespace std;array<double,4>ad={0};cout<<"Enter your success of the three times 40 meters running:\n"; cin >> ad[0]>>ad[1]>>ad[2];cout<<"success1:"<<ad[0]<<endl;cout<<"success2:"<<ad[1]<<endl;cout<<"success3:"<<ad[2]<<endl;ad[3]=(ad[0]+ad[1]+ad[2])/3;cout<<"average:"<<ad[3]<<endl;return 0;}第五章循环和关系表达式//ex.5.1#include <iostream>int main(){using namespace std;cout<<"Please enter two integers: ";int num1,num2;cin>>num1>>num2;int sum=0;for(int temp=num1;temp<=num2;++temp)//or temp++sum+=temp;cout<<"The sum from "<<num1<<" to "<<num2<<" is "<<sum<<endl; return 0;}//ex.5.2#include <iostream>#include<array>int main(){using namespace std;array<long double,101>ad={0};ad[1]=ad[0]=1L;for(int i=2;i<101;i++)ad[i]=i*ad[i-1];for(int i=0;i<101;i++)cout<<i<<"! = "<<ad[i]<<endl;return 0;}#include <iostream>#include <array>using namespace std;int main(){array<long double, 101> multiply;multiply[0] = multiply[1] = 1LL;for (int i = 2; i <= 100; i++)multiply[i] = multiply[i-1]*i;cout << multiply[100];return 0;}//ex.5.3#include <iostream>int main(){using namespace std;cout<<"Please enter an integer: ";int sum=0,num;while((cin>>num)&&num!=0){sum+=num;cout<<"So far, the sum is "<<sum<<endl;cout<<"Please enter an integer: ";}return 0;}//ex.5.4#include <iostream>int main(){using namespace std;double sum1,sum2;sum1=sum2=0.0;int year=0;while(sum2<=sum1){++year;sum1+=10;sum2=(100+sum2)*0.05+sum2;}cout<<"经过"<<year<<"年后,Cleo 的投资价值才能超过Daphne 的投资价值。

String对象真的可以用==比较吗

String对象真的可以用==比较吗

String对象真的可以⽤==⽐较吗1.⽤==会出现true的情况String str2 = "java";System.out.print(str1==str2);地球上有bai点Java基础的⼈都知道会输出false,因为==⽐较的是引⽤,equals⽐较的是内容值。

不是我忽悠dao⼤家,你们可以在⾃⼰的机⼦上运⾏⼀下,结果是true!原因很简单,String对象被放进常量池⾥了,再次出现“java”字符串的时候,JVM很兴奋地把str2的引⽤也指向了 “java”对象,它认为⾃⼰节省了内存开销。

2.⽤==会出现false的情况不难理解吧呵呵例⼦B:String str1 = new String("java");String str2 = new String("java");System.out.print(str1==str2);看过上例的都学聪明了,这次肯定会输出true!很不幸,JVM并没有这么做,结果是false。

原因很简单,例⼦A中那种声明的⽅式确实是在 String常量池创建“java”对象,但是⼀旦看到new关键字,JVM会在堆中为String分配空间。

两者声明⽅式貌合神离,这也是我把“如何创建字符串对象”放到后⾯来讲的原因。

3.分清楚编译的情况(常量时在初始化对象的时候就编译了)和运⾏时情况(是初始化之后运⾏对象⽰例的时候)⼤家要沉住⽓,还有⼀个例⼦。

例⼦C:String str1 = "java";String str2 = "blog";String s = str1+str2;System.out.print(s=="javablog");再看这个例⼦,很多同志不敢妄⾔是true还是false了吧。

爱玩脑筋急转弯的⼈会说是false吧……恭喜你,你会抢答了!把那个“吧”字去掉你就完全正确。

北理《Java技术与应用》课程学习资料(二)49

北理《Java技术与应用》课程学习资料(二)49

北理《Java技术与应用》FAQ(二)第二章标识符、关键字和数据类型一、补码Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。

补码的规定如下:对正数来说,最高位为0 ,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。

对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。

如-42 的补码为 11010110 (00101010 按位取反11010101 +1 11010110 )用补码来表示数,0的补码是唯一的,都为00000000。

(而在原码,反码表示中,+0和-0的表示是不唯一的,可参见相应的书籍)。

而且可以用 111111 表示-1的补码,(这也是补码与原码和反码的区别)。

二、JAVA对象有效范围和废物自动回收如何解释?对象有一定的生命期并在它的生命期间使用资源,当一个对象不再被使用时,它应释放内存,避免内存溢出。

在Java里,收集和释放内存是一个叫自动废品回收站的线程的责任。

这个线程监视对象有效范围并给一个走出有效范围的对象作上标识。

例如:String s;//没有分配内存s = new String("oldstring");//分配内存s ="newstring";//重新分配内存(创建新对象)我们将在以后访问String类时将更加明白它的工作过程,但它的快速工作过程是这样的:1.创建一个新的String类对象并填充以"oldstring"2.创建另一个String对象并填充以"newstring"注意我们创建了两个对象:Stirng对象"oldstring"和Stirng对象"newstring"3.在第三条语句里,第一个包括"oldstring"的叫做s的对象已走出了有效范围,没有任何方法可以再访问他,我们现在有一个新的对象也叫s,包含"newstring"。

(高考选考)信息技术必修1 第二章信息的加工(算法及程序实现)

(高考选考)信息技术必修1 第二章信息的加工(算法及程序实现)

第二章信息的加工(算法及程序实现)一、算法的基本概念所谓算法就是对解题方法精确而完整的描述,由有限个步骤组成。

算法具有如下特征:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。

1.有穷性。

一个算法必须保证它的执行步骤是有限的,即它是能终止的。

广义地说,“有穷性”一般指操作步骤的数量有限或能在合理的时间范围内完成全部操作。

2.确定性。

算法中的每个步骤必须有确切的含义,不能有二义性。

3.可行性。

算法中每一个步骤都要足够简单,是实际能做的,而且能在有限的时间内完成。

4.有0个或多个输入。

算法常需要对数据进行处理,一般需要从外界输入数据,如果所需的数据已经包含在算法中,则不再需要输入,此时是0个输入。

5.有一个或多个输出。

算法的目的是用来求解问题,问题求解的结果应以一定的方式输出,即必须告诉用户最后结果,因此至少要有一个输出。

二、算法的常用表示方法常用的算法表示方法有:自然语言、流程图、计算机语言等三种方法。

1.自然语言。

是指人们在日常生活中使用的语言,用自然语言描述的算法通俗易懂,但缺乏直观性和简洁性,容易产生歧义。

2.流程图。

是算法的一种图形化表示方法,与自然语言相比,它的描述更形象、更直观。

3.计算机语言。

是指编写程序的语言,它是计算机要执行的指令集合。

三、顺序、选择、循环三种控制结构算法的执行流程是指算法中各处理步骤的执行次序和模式,通常由以下三种基本结构组成:1.顺序结构是按照次序从上往下依次执行,每条语句必须而且只能执行一次。

2.选择结构,又称分支结构。

执行过程根据条件判断选择不同分支执行:条件为真时执行处理步骤stepl,否则执行处理步骤step2。

选择模式对条件是否成立只判断1次。

3.循环模式,是对某个条件进行判断,当结果为真时,执行步骤step(循环体),然后再判断这个条件,当结果为真时,再次执行step,并继续判断条件。

重复上述过程,直到判断的结果为假,跳出循环,执行循环体后面的指令。

string对象中的slice方法

string对象中的slice方法

string对象中的slice方法String对象中的slice方法1. 概述在JavaScript中,字符串是一种常见的数据类型。

String对象是字符串的封装类,提供了许多实用的方法来操作和处理字符串。

其中之一就是slice方法,用于从字符串中提取指定部分并返回新的字符串。

2. 语法(startIndex, endIndex);•startIndex:表示提取的起始位置,包含该位置的字符。

•endIndex:表示提取的结束位置,不包含该位置的字符。

3. 使用示例以下是一些常见的使用示例:•提取字符串的一部分:let str = "Hello, World!";let result = (7, 12);(result); // 输出 "World"•如果省略endIndex参数,则提取从startIndex到字符串末尾的所有字符:let str = "Hello, World!";let result = (7);(result); // 输出 "World!"•可以使用负数作为参数,表示从字符串末尾开始计数:let str = "Hello, World!";let result = (-6, -1);(result); // 输出 "World"•如果startIndex大于等于endIndex,则返回空字符串:let str = "Hello, World!";let result = (7, 5);(result); // 输出 ""4. 注意事项•startIndex和endIndex参数都是可选的。

如果省略两个参数,则返回原字符串。

•当参数为负数时,会按照反向计数的方式提取字符串。

•如果startIndex超出了字符串的边界,或者startIndex大于或等于endIndex,则返回空字符串。

java完美经典读书笔记

java完美经典读书笔记

java完美经典读书笔记第一章概述第二章JAVA语言基础关键字:基本数据类型:bytehortintcharlongfloatdoubleboolean循环控制:dowhileforbreakcontinue分支控制:ifelewitchcaedefaultbreak方法变量和类得修饰府:privatepublicprotectedfinaltaticabtractynchronizedvolatiletrictf ptranient字面值常量:faletruenull方法相关得关键字:returnvoid包相关得关键字:packageimport异常处理:trycatchfinallythrowthrow对象相关:newe某tendimplementuperclaintanceofthi很多算术运算操作可以产生浮点型无法表达的数字,如无限大,无限小等,这些数据的表达通过浮点数封装类(Float和Double)所提供的特殊属性来表达。

Float.NaN非数字Float.NEGATIVE_INFINITY无限小Float.POSITIVE_INFINITY无限大Double.NaN非数字Double.NEGATIVE_INFINITY无限小Double.POSITIVE_INFINITY无限大数据类型的自动转换图:char--->{int-->long-->float-->doublebyte-->hort-->{内置类对应的基本类型:Byte-->byte;Short-->hort;Integer-->int;Long-->long;Float-->float;Double-->doubleBoolean-->boolean;Character-->char;String-->char[]将基本数据类型转为String类型:tringtr1;intintv1=300;tr1=String.valueOf(intv1);将tring类型转为基本数据类型:tringtr1="126";inti1=Integer.pareInt(tr1);取得tring对象内含的char[]值,必须使用它的toCharArray()方法来取得。

string的各种函数(系统学习)

string的各种函数(系统学习)

string的各种函数(系统学习)1、按照⾯向对象的要求,可以把字符串看作⼀个对象,设计⼀个串类加以描述。

但是,在⼀般的情况下不必建⽴⾃⼰的串类,c++标准在库<string>中给出了类string,提供了丰富的串操作,程序员使⽤指令: #include<string>即存取这个类。

可将类string视为⼀个容器类,其部分操作如下:构造函数:string s:构造⼀个空串sstring s(a):构造串s,并⽤字符数组a初始化string s(a,n):构造串s,⽤字符数组a的前n个字符初始化string s(str):⽤串str构造串s(拷贝初始化)看下⾯代码验证#include<iostream>#include<string.h>#include<map>#include<cstdio>#include<cstring>#include<stdio.h>#include<cmath>#include<ctype.h>#include<math.h>#include<algorithm>#include<set>#include<queue>typedef long long ll;using namespace std;const ll mod=1e9+7;const int maxn=1e5+10;const int maxk=3e5+10;const int maxx=1e4+10;const ll maxe=1000+10;#define INF 0x3f3f3f3f3f3f#define Lson l,mid,rt<<1#define Rson mid+1,r,rt<<1|1int main(){char a[maxn];cin>>a;//输⼊abcdefghstring s(a);//结果为abcdefghstring s1(a,5);//结果为abcdestring s2(s1);//结果为abcdecout<<s<<endl;cout<<s1<<endl;cout<<s2<<endl;return0;}输⼊输出:getline(cin,s,delim):从cin中提取字符存⼊串s中,当遇到delim或者提取的字符个数等于s的长度时结束,如果⾃⼰不设定,默认为'\n' getline(cin,s):遇到'\n'结束cin>>s:遇到空⽩字符终⽌提取,空⽩字符不被读取cout<<s:输出s#include<iostream>#include<string.h>#include<map>#include<cstdio>#include<cstring>#include<stdio.h>#include<cmath>#include<ctype.h>#include<math.h>#include<algorithm>#include<set>#include<queue>typedef long long ll;using namespace std;const ll mod=1e9+7;const int maxn=1e5+10;const int maxk=3e5+10;const int maxx=1e4+10;const ll maxe=1000+10;#define INF 0x3f3f3f3f3f3f#define Lson l,mid,rt<<1#define Rson mid+1,r,rt<<1|1int main(){string s;while(getline(cin,s,'#')){getchar();//⾃⼰指定了字符要加getchar,不然结果会多出⼀个换⾏,但是默认情况下不⽤加getcharcout<<s<<endl;}return0;}操作符:s=val:赋值操作,val可以是⼀个串,⼀个字符或⼀个字符数组s+=val:将val添加到串s之后s[pos]:下标操作s+t,t+s:s和t的连接,返回连接的结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 从结构到类的演变
使用string对象
类名 string 属性 str 操作: string() 构造ห้องสมุดไป่ตู้数 find() 查找函数 size() 求长度函数 substr() 求字串函数
使用string类必须包 含头文件 #include<string> 初始化: string str=“A”; // string str=‘A’;
#include<iostream> #include<string> using namespace std; void main() { string str1(“We are here!”); string str2=“where are you?”; cout<<str1[0]<<str1[11]<<“,”<<str1<<endl; cout<<str2[0]<<str2[13]<<“,”<<str2<<endl; cout<<“str1 length is”<<str1.size(); cout<<“str2 length is”<<str2.size(); }
验证 例2.10
String对象数组和泛型算法
泛型算法同样适用于 string类 String对象之间可以 直接赋值。 不要将string类本身 的find成员函数和泛 型算法中的find函数 混淆。
#include<iostream> #include<string> #include<algorithm> void main() { string str1=“we are here!”,str2=str1; reverse(&str1[0],&str1[0]+12); cout <<str1<<endl; copy(&str1[0],&str1[0]+12,&str2[0]); cout<<str2<<endl; }
String类有一对用于指示其元素位置的基本成 员函数: 指示第一元素的begin 指示最后一个元素之后的字符结束标志end 如果当前begin不等于end,算法先作用于 begin所指元素,并将begin前进一个位置,然 后作用于当前begin所指元素,如此进行。 验证例题2.12
练习
P48 三、编程题
对象名称.substr(参数1,参数2) 参数1:要截取子串在字符串中的位置 参数2:截取的长度 例:string str1=“we are here!”; string newstr1=str1.substr(3,3); string newstr2=newstr1.substr(2,8);
对象名称.find(要查找的字符串,开始查 找的位置); 返回要查找的字符串在主串中的位置。 例:string str1=“we are here!” int i=str1.find(“are”,0);
例如:日期格式转换
例:将美国日期May 28 , 2002转换国际格 式28 May 2002 解 string Date=“May 28 , 2002”; (1)寻找月份 i=Date.find(“ ”,0); string month=Date.substr(0,i); (2)寻找日子 K=Date.find(“,”,i+1); string day=Date.substr(i+1,k-(i+1)); (3)寻找年 string year=Date.substr(K+2,4); (4)按照新格式进行拼装
上机验证例题2.9
使用complex对象
必须包含头文件 #include<complex> Complex类是一个模板类,可以定义 多种数据类型的复数。 定义格式:
complex<数据类型>对象名(实部值,虚部值); 例 complex<int>num1(2,3); complex<double>num2(3.5,4.5); complex的real和imag成员函数可以输出复数对 象的实部和虚部的值。 例 cout<<num1.real( )<<num1.imag ( )<<endl;
相关文档
最新文档