精华内容
下载资源
问答
  • C++处理字符串的方法——字符串类与字符串变量 C++提供了一种新的数据...字符串变量的定义和引用 定义字符串变量 string str1; string str2=“China”; 注意:在使用string类的定义变量时,必须在本文件的开头将...

    前言

    C++提供了一种新的数据类型——字符串类型(string类型)。string类型并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类型可以定义对象。

    字符串变量的定义和引用

    1. 定义字符串变量
    string str1;
    string str2=“China”;
    

    注意:在使用string类的定义变量时,必须在本文件的开头将C++标准库中的string头文件包含进来,即要加上#include <string>

    1. 对字符串变量赋值
    str1=“China”;		//str1是字符串变量,不是字符数组名
    str1=str2;		//字符串变量之间也可互相赋值
    str1[2]='Z'	//可以对字符串变量中的某一个字符进行赋值,结果就成了“ChZna”
    
    1. 字符串变量的输入输出
    cin>>str1;		//将str1输入
    cout<<str1;		//将str1输出
    

    字符串变量的运算

    在用字符数组存放字符串时,字符串的运算要用字符串函数,如strcat连接、strcmp比较、strcpy复制。而对于string类对象,可以不用这些函数,而直接用简单的运算符。

    1. 字符串复制直接用符号
    str1=str2;
    作用同“strcpy(str1,str2);
    1. 字符串连接直接用+号
    string str1="A";;
    string str1="B";
    string str;
    str=str1+str2;		//则str="AB"
    
    1. 字符串比较直接用关系运算符
      可直接用关系运算符来进行字符串的比较。比如等于(==),大于(>),大于等于(>=),不等于(!=)。

    字符串数组

    不仅可以用string定义字符串变量,还可以用string定义字符串数组。

    string name[5];
    string name[5]={"W","A","N"};		//那每一个元素就相当于一个字符串变量。
    

    字符串运算举例

    1. 输入三个字符串,要求将字符串按照字母的大小由小到大的顺序输出字符串,字符串之间用空格隔开。

    题目分析:
    首先肯定是先定义变量;
    然后给变量赋值;
    接着就是比较的过程:先对23进行比较,保证2是小于3的,然后就用1去和23比较,确定输出的字符串顺序,这样就容易许多。输出一直是123的顺序只不过已经是排序过的字符串了。

    代码:

    //输入三个字符串,要求将字符串按照**首**字母的大小由小到大的顺序输出字符串,字符串之间用空格隔开。
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	string str1,str2,str3,temp;
    	cin >> str1 >> str2 >> str3;
    	if(str2>str3)
    	{
    		temp=str2;str2=str3;str3=temp; //先保证str2是小于str3的然后再判断str1与这俩的大小
    	}
    	if(str1<=str2)
    	cout << str1+' ' << str2+' ' <<str3;
    else if(str1<=str3)
    	cout << str2+' ' << str1+' ' << str3;
    else
    	cout << str2+' ' << str3+' ' << str1;
    
    	return 0;
    }
    

    测试结果:
    在这里插入图片描述

    1. 一个班有n个学生,需要把每个学生的简单材料(姓名和学号)输入计算机保存。然后可以通过输入某一学生的姓名查找其有关资料。当输入一个姓名之后,程序就查找该班中有无此学生,如果有,则输出他的姓名和学号,如果查不到,则输出“本班无此人”。
      为解决此问题,可分别编写两个函数,函数input_data用来输入n个学生的姓名和学号,函数search用来查找要找的学生是否在本班。

    问题分析:
    该问题的程序中除了主函数外,包括了两个子函数来供调用。

    代码:

    #include <iostream>
    #include <string>
    using namespace std;
    //定义全局变量
    string name[50],num[50];
    int n;//实际的学生数
    
    int main()
    {	
    	//函数声明
    	void input_data();
    	void search(string find_name);
    	string find_name;
    	//输入学生人数和信息
    	cout <<"请输入本班学生的人数:";
    	cin >> n;
    	input_data();
    	//查询
    	cout << "请输入要查询的学生姓名:";
    	cin >> find_name;
    	search(find_name);
    
    	return 0;
    }
    
    void input_data()
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		cout<<"请输入第"<< i+1 <<"个学生的姓名和学号:";
    		cin >> name[i] >> num[i];
    	}
    }
    
    void search(string find_name)
    {
    	int i;
    	bool flag = false;//用来判断数据是否有效
    	for(i=0;i<n;i++)
    	{
    		if(name[i] == find_name)//遍历之前输入的学生信息,若没有找到相关的学生信息则flag一直保持false。
    		{	cout << name[i] << "的学号是:" << num[i] << endl;
    			flag = true;			
    		}
    		break;//跳出本次循环,继续下一次循环
    	}
    
    	if(flag == false)
    		cout << "本班无此人";
    }
    

    拓展:

    #include <iostream>
    #include <string>
    using namespace std;
    //定义全局变量
    string name[50],num[50],sex[50],age[50],chinese[50],math[50],english[50];
    int n;//实际的学生数
    
    int main()
    {	
    	//函数声明
    	void input_data();
    	void search(string find_name);
    	string find_name;
    	//输入学生人数和信息
    	cout <<"请输入本班学生的人数:";
    	cin >> n;
    	input_data();
    	//查询
    	cout << "请输入要查询的学生姓名:";
    	cin >> find_name;
    	search(find_name);
    
    	return 0;
    }
    
    void input_data()
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		cout<<"请输入第"<< i+1 <<"个学生的姓名、学号、性别、年龄、以及语数英三门成绩:"<< endl;
    		cout<<"姓名 ";cin >> name[i];
    		cout<<"学号 ";cin >> num[i];
    		cout<<"性别 ";cin >> sex[i];
    		cout<<"年龄 ";cin >> age[i];
    		cout<<"语文成绩 ";cin >> chinese[i];
    		cout<<"数学成绩 ";cin >> math[i];
    		cout<<"英语成绩 ";cin >> english[i];
    	}
    }
    
    void search(string find_name)
    {
    	int i;
    	bool flag = false;//用来判断数据是否有效
    	for(i=0;i<n;i++)
    	{
    		if(name[i] == find_name)//遍历之前输入的学生信息,若没有找到相关的学生信息则flag一直保持false。
    		{	cout << name[i] << "的学号是 " << num[i]<< "\t性别 " << sex[i] << "\t年龄 " << age[i]<< endl;
    			cout << name[i] << "成绩分别为:\n" <<"语文成绩 "<< chinese[i]<<"\t数学成绩 "<< math[i] <<"\t英语成绩 "<< english[i]<< endl;
    			flag = true;			
    		}
    		break;//跳出本次循环,继续下一次循环(去掉好像也可以)
    	}
    
    	if(flag == false)
    		cout << "本班无此人";
    }
    

    结果测试:
    在这里插入图片描述

    展开全文
  • C++提供了一种新的数据类型——字符串类型(string类型),在使用上和char、int类型一样,可以用来定义变量,这...1.字符串变量的定义和引用 (1)定义字符串变量 和其他类型变量一样,字符串变量必须先定义后使...

    C++提供了一种新的数据类型——字符串类型(string类型),在使用上和char、int类型一样,可以用来定义变量,这就是字符串变量

    实际上,string并不是C++本身具有的基本类型,它是C++标准库中声明的一共字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。

    1.字符串变量的定义和引用

    (1)定义字符串变量

    和其他类型变量一样,字符串变量必须先定义后使用,定义字符串变量要用类名string,如:

    string string1; //定义字符串变量string1
    string string2="China"; //定义string2并对其初始化

    注意:要使用string类的功能时,必须在本文件的开头将C++标准库中的string头文件包含进来,即应加上

    #include<string>   //注意头文件不是string.h

    (2)对字符串变量的赋值

    在定义了字符串变量后,可以用赋值语句对它赋予一个字符串常量,如:

    string1="Canada";

    既可以用字符串常量给字符串变量赋值,也可以用一个字符串变量给另一个字符串变量赋值。

    string2=string1;

    不要求string2和string1长度相同。在定义字符串变量时不需要指定长度,它的长度随其中的字符串长度而改变。

    字符串常量以‘\0‘作为结束符,但将字符串常量存放到字符串变量中时,只存放字符串本身而不包括‘\0‘

    string word="Then";
    word[2]='a';  //修改序号为2的字符

    因此字符串变量word 中的字符为“Than”共四个字符,而不是“Than”再加‘\0‘。

    (3)字符串变量的输入输出

    在输入输出语句中用字符串变量名,输入输出字符串,如:

    cin>>string1;
    cout<<string2;

    2.字符串变量的运算

    在以字符数组存放字符串时,要用strcat(连接)、strcmp(比较)、strcpy(复制),而对string类对象,可以不用这些函数,而直接用简单的运算符。

    (1)字符串复制用赋值号

    string1=string2;

    其作用与“strcpy(string1,string2);”相同。

    (2)字符串比较直接用关系运算符

    可以用==(等于)、>(大于)、<(小于)、!=(不等于)、>=(大于或等于)、<=(小于或等于)等关系运算符来进行字符串的比较。

    3.字符串数组

    不仅可以用string定义字符串变量,也可以用string定义字符串数组。

    string name[5];
    string name[5]={"Zhang","Li","Fun","Wang","Tan"};

    此时name数组的状况是:

    name[0]=

    Z h a n g

    name[1]=

    L i

    name[2]

    F u n

    name[3]

    W a n g

    name[4]

    T a n

    可以看到:

    在一个字符串数组中包含若干个元素,每一个元素相当于一个字符串变量;

    在字符串数组的每一个元素存放一个字符串,而不是一个字符,这是与字符数组的区别。

    在每一个字符串元素中只包含字符串本身的字符而不包括‘\0’

    展开全文
  • C++——字符串处理

    2019-10-03 15:02:22
    字符数组的声明和引用字符串: 字符串常量“china”,没有字符串变量,用字符数组来存放字符串,字符串以‘\0’结束。 字符串数组的初始化: 逐个输出输入字符串; 将整个字符串一次输入输出; ...

    11、用字符数组存储和处理字符串

    字符数组的声明和引用  字符串:

    字符串常量 “china”,没有字符串变量,用字符数组来存放字符串,字符串以‘\0’结束。

    字符串数组的初始化:

     

    逐个输出输入字符串;

    将整个字符串一次输入输出;

    输出字符不包含\0;

    输出字符串时用数组名,遇到\0结束;

    输入多个字符串以空格分隔,输入单个字符串时期中不能有空格

     

    static char str[8]={112,114,111,103,114,97,109,0};
    static char str[8]={'p','r','o','g','r','a','m','\0'};
    static char str[8]="program";
    static char str[]="program";

     

    #include<iostream>

    using namespace std;

    int main()

    {

             static char c[10]=

             {'I',' ','a','m',' ','a',' ','b','o','y'};  //一维字符数组的声明和初始化

             int i;

             for(i=0;i<10;i++)    //逐个输出字符数组的元素

                                cout<<c[i];

             cout<<endl;

    }//I’m a boy

    //输出一个钻石图形

    #include<iostream>

    using namespace std;

    int main()

    {        //二维字符数组的声明和初始化,未被初始化的元素初始值为0

             static char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'}, {'*',' ',' ',' ','*'},{' ','*',' ','*'}, {' ',' ','*'}};

             int i,j;

             for (i=0;i<5;i++)      //逐个输出二维字符数组的元素

             { 

                                for(j=0;j<5 && diamond[i][j]!=0;j++)

                                         cout<<diamond[i][j]; 

                                cout<<endl;

             }

    }

    cin读取单词的时候遇到空格跳过;不能给数组名赋值,数组名时常量;

    cin.getline(字符数组名st,字符个数N,结束符)

    cin.get (字符数组名st,字符个数N,结束符)

    一次连续读入多个字符,可以包括空格,直到读满N个,或者遇到结束符(默认为\n),读入的字符串存放在st中。

    #include <iostream>

    using namespace std;

    void main (void)

    {        char city[80];

             char state[80];

             int  i;

             for (i = 0; i < 2; i++)

             { cin.getline(city,80,',');

               cin.getline(state,80,'\n');

               cout<<"City: "<<city<<"   State: "
          <<state<<endl;

             }

    }

    Beijing,China

    City: Beijing   Country: China

    Shanghai,China

    City: Shanghai   Country: China

    字符串处理函数strcat(连接),strcpy(复制),strcmp(比较),strlen(求长度), strlwr(转换为小写),strupr(转换为大写),头文件<cstring>

    C++中用字符数组处理字符串有很多不方便,我们可以使用string类,

    #include <string>

    #include <iostream>

    using namespace std ;

    void trueFalse(int x)//辅助函数

    {cout << (x? "True": "False") << endl;}

    int main()

    {        string S1="DEF",  S2="123";

             char CP1[]="ABC";

             char CP2[]="DEF";

             cout << "S1 is " << S1 << endl;

             cout << "S2 is " << S2 << endl;

             cout<<"length of S2:"<<S2.length()<<endl;

             cout << "CP1 is " << CP1 << endl;

             cout << "CP2 is " << CP2 << endl;

             cout << "S1<=CP1 returned ";

             trueFalse(S1<=CP1);

             cout << "CP2<=S1 returned ";

             trueFalse(CP2<=S1);

             S2+=S1;

             cout<<"S2=S2+S1:"<<S2<<endl;

             cout<<"length of S2:"<<S2.length()<<endl;

    }

    转载于:https://www.cnblogs.com/lemaden/p/10238049.html

    展开全文
  • C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。 ...一、字符串变量的定义和引用 1. 定义字符串
    C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。

    实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。

    一、字符串变量的定义和引用

    1. 定义字符串变量
    和其他类型变量一样,字符串变量必须先定义后使用,定义字符串变量要用类名string。如
        string string1;  //定义string1为字符串变量
        string string2=″China″; //定义string2同时对其初始化
    应当注意: 要使用string类的功能时,必须在本文件的开头将C++标准库中的string头文件包含进来,即应加上
        #include <string>  //注意头文件名不是string.h

    2. 对字符串变量的赋值
    在定义了字符串变量后,可以用赋值语句对它赋予一个字符串常量,如
        string1=″Canada″;
    既可以用字符串常量给字符串变量赋值,也可以用一个字符串变量给另一个字符串变量赋值。如
        string2=string1; //假设string2和string1均已定义为字符串变量
    不要求string2和string1长度相同,假如string2原来是″China″,string1原来是″Canada″,赋值后string2也变成″Canada″。在定义字符串变量时不需指定长度,长度随其中的字符串长度而改变。

    可以对字符串变量中某一字符进行操作,如
        string word=″Then″;  //定义并初始化字符串变量word
        word[2]=′a′; //修改序号为2的字符,修改后word的值为″Than″

    3. 字符串变量的输入输出
    可以在输入输出语句中用字符串变量名,输入输出字符串,如
       cin>> string1;  //从键盘输入一个字符串给字符串变量string1
       cout<< string2; //将字符串string2输出

    二、字符串变量的运算

    在上一节中可以看到: 在以字符数组存放字符串时,字符串的运算要用字符串函数,如strcat(连接)、strcmp(比较)、strcpy(复制),而对string类对象,可以不用这些函数,而直接用简单的运算符。
    1. 字符串复制用赋值号
         string1=string2;
      其作用与“strcpy(string1,string2);”相同。
    2. 字符串连接用加号
         string string1=″C++″; //定义string1并赋初值
         string string2=″Language″;//定义string2并赋初值
         string1=string1 + string2;//连接string1和string2
      连接后string1为″C++ Language″。
    3. 字符串比较直接用关系运算符
      可以直接用 ==(等于)、>(大于)、<(小于)、!=(不等于)、>=(大于或等于)、<=(小于或等于)等关系运算符来进行字符串的比较。
      使用这些运算符比使用5.5.5节中介绍的字符串函数直观而方便。

    三、字符串数组

    不仅可以用string定义字符串变量,也可以用string定义字符串数组。如
       string name[5]; //定义一个字符串数组,它包含5个字符串元素
      string name[5]={″Zhang″,″Li″,″Fun″,″Wang″,″Tan″};
       //定义一个字符串数组并初始化
    此时name数组的状况如图5.11所示。

    图5.11

    关于字符串数组的几点说明:
    1. 在一个字符串数组中包含若干个(现为5个)元素,每个元素相当于一个字符串变量。
    2. 并不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长度也是可以变化的,当向某一个元素重新赋值,其长度就可能发生变化。
    3. 在字符串数组的每一个元素中存放一个字符串,而不是一个字符,这是字符串数组与字符数组的区别。如果用字符数组存放字符串,一个元素只能存放一个字符,用一个一维字符数组存放一个字符串。
    4. 每一个字符串元素中只包含字符串本身的字符而不包括′\0′。

    可见用字符串数组存放字符串以及对字符串进行处理是很方便的。

    在定义字符串数组时怎样给数组分配存储空间呢?实际上,编译系统为每一个字符串变量分配4个字节,在这个存储单元中,并不是直接存放字符串本身,而是存放字符串的地址。在本例中,就是把字符串″Zhang″的地址存放在name[0],把字符串″Li″ 的地址存放在name[1],把字符串″Fun″的地址存放在name[2]……图5.11只是一个示意图。在字符串变量中存放的是字符串的指针(字符串的地址)。
    展开全文
  • JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化:为字符串开辟一个字符串常量池,类似于缓存区创建字符串常量时,首先检查字符串常量池是否存在该字符串 存在该字符串,返回引用实例,不...
  • 字符串数组名是一个常量指针 指针不能更改 指针内容可以更改(下图中企图用字符串数组...字符串指针是一个指针常量 所指内容不能变 但是指针可以引用另一个指针(预图更改字符串指针所指向内容时候程序崩溃)  ...
  • 相关问题得整理大家可以一起讨论学习!!!学无止境!!!!1.如何比较字符串?使用“ ==”还是使用equals()?简而言之,“ ==”测试引用是否相等,而equals... 字符串是不可变的,这意味着一旦创建它们,它们将...
  • C++字符串数组

    万次阅读 多人点赞 2019-05-30 22:43:54
    (转载文章) C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符...一、字符串变量的定义和引用 1. 定义字...
  • 一、字符串与指针 1.字符串 字符串的底层实现是char类型数组,以\0结尾(故判断一个字符串是否结束则判断是否遇到\0),不用担心字符串个数的问题。字符串的底层可以是字符指针,也可以是字符数组。 C++中包含string...
  • C++ string字符串末尾添加字符方法

    千次阅读 2020-07-21 05:12:39
    str += 'a' 涉及到的是对象的引用,返回引用,避免了产生新的对象 2. 使用append函数添加 str.append(1, 'a'); 使用的是append的函数重载,向string的后面加size_type _Count个字符value_type _Ch basic_string&...
  • 我们已经见过了Rust的动态字符串String类型:let mut a = String::from("hello");a.push_str(" world");今天再借LeetCode的题来了解一下字符串的常用操作——切片。对String来说,切片是一种引用形式的子串,所以它...
  • C++ 字符串转数字/数字转字符串 需要引用头文件<stream> 字符串转数字 #include<sstream> #include<string> string num2str(int i) { stringstream ss; ss << i; return ss.str(); } ...
  • PTA - 逆序字符串C++引用

    千次阅读 2019-04-26 10:31:07
    逆序字符串(C++引用) 题目:设计一个void类型的函数reverse_string,其功能是将一个给定的字符串逆序。例如,给定字符串为“hello”,逆序后为“olleh”。 函数接口定义如下: /* 函数原型参见main函数 */ 裁判测试...
  • 1. C++的LInux编译 在Linux中编译C++可以用g++或者c++来实现,逻辑格式与C的一样 2. C++中的头文件变化 C++标准头文件,一律不带.h,为了区分开C C++中包含了所有标准C头文件,并且重新编译,重新命名:去掉...
  • C++字符串转换

    2016-07-01 16:40:00
    引用自:http://blog.sina.com.cn/s/blog_a98e39a20101ari9.html 把最近用到的各种unicode下类型转换总结了一下,今后遇到其他的再补充: 1、string转CString string a=”abc”; CString str=CString(a.c_str...
  • 对里面的数值引用的时候,需要将其(字符串)0转换为数值。 CharToFloat(char* str, vector&lt;float&gt;&amp; f)。函数将字符串按照逗号分隔,并存储在vector中。直接上代码。 注:代码都是本人亲自...
  • c++ 字符串常量

    2020-08-04 19:58:53
    "这个字符串在函数 s1和s2 中都引用了。但在内存中却仅仅有一份拷贝,这与静态变量性质相当神似。 char *c="chenxi"; 书上说: "chenxi"这个字符串被当作常量并且被放置在此程序的内存静态区。 全部的字符窜常
  • Java和C++判断字符串是否相等

    千次阅读 2013-04-07 22:13:44
    1、用“==”运算符,该运算符表示指向字符串引用是否相同,比如: String a="abc";String b="abc", 那么a==b将返回true。这是因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存 一
  • C++字符串变量作为函数形参传递(引用方式)
  • C++中字符数组与字符串 赋值问题

    千次阅读 2019-02-25 13:33:54
    在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。 string c="asd"; char c1[]=c;//编译不通过,不存在赋值规则 但字符数组可以给字符串变量赋值 如: char c[]...
  • JavaScript中的String类型String类型是字符串的对象包装类型(与字符串对应的引用类型)var Objstring = new String("Hello Woeld");二. js中对字符串的一些操作1. 字面量创建字符串var myStr = "Hi";2. myStr.length...
  • c++字符串常量

    2018-08-22 16:30:34
    字符串常量。之所以称之为常量,由于它可一看作是一个没有命名的字符串且为常量,存放在静态数据...这个字符串在函数 s1和s2 中都引用了。但在内存中却仅仅有一份拷贝,这与静态变量性质相当神似。 char *c="c...
  • C++中关于字符串引用一些整理

    千次阅读 2014-04-20 19:21:41
    在cout和多数C++表达式中,char数组名、char指针以及用引号括起来的字符串常量都被解释为字符串第一个字符的地址。因此对于char a[10]="abcd";C++中的cout对象认为char(其它的也是一样的)的地址是字符串的首地址,则...
  • C++字符串中删除特定元素

    千次阅读 2019-04-12 18:51:41
    #include<iostream> #include<string.h> #include<...//String类写法,注意需要引用传递,否则string类定义的为值传递 void deletechar(string &a) { int len=a.size(); for(int ...
  • C++字符串常量

    2017-10-18 23:02:50
    字符串常量。之所以称之为常量,由于它可一看作是一个没有命名的字符串且为常量,存放在静态数据区。..."这个字符串在函数 s1和s2 中都引用了。但在内存中却仅仅有一份拷贝,这与静态变量性质相当神似。 char *
  • 0.字符类型:(0).字符类型 char 是基本数据类型,它是 character 的缩写。...和 char 类型不同,字符串类型 String 是引用类型,我们用双引号 "..." 表示字符串。一个字符串可以存储0个到任意个...
  • 要想使用标准C++中string类,必须要包含#include // 注意是,不是或cstring,带.h的是C语言中的头文件using std::string;using std::wstring;或using namespace std; String类是不可变(final)的,对String类的...
  • 字符串对象的引用1.3. 字符串对象的输入和输出1.4. 字符串对象与C风格字符串的转换1.5. string的一些操作 1. 字符串对象 C++字符串提供了一种新的自定义类型:字符串类string。采用类来实现字符串,具有如下特点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,932
精华内容 772
关键字:

c++引用字符串

c++ 订阅