c++编程问题,string类型怎么赋值,怎么引用

 我来答
匿名用户
2017-05-05
展开全部
  • 要想使用标准C++中string类,必须要包含

#include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件

  • C++中,string是一个类(注意,不是类型)。它的赋值,直接将字符串等于给它,或将同类的变量赋给它即可。比如:

string LSStr,LSStrA; //定义

LSStr = 'aabbccdd'; //赋值

LSStrA = LSStr; //同类赋值

1、不同编译环境下的C++,对字符串的处理稍有差别。

2、最原始的C语言中,没有string,在C++里才有了string这个类。

3、注意,string是一个类,不是类型。类这个概念是C++才特有的,它的存在是为了模块化编程。类是一个相对复杂的东西,它就象一个单元,包含了自已内部的数据定义、函数等等。

二、值得注意的是,早期的C中,对字符串的处理是用字符数组来进行的,比如:   

char s[30]; 

strcpy(s, "Good News!"); /*给数组赋字符串*/ . 

或是,让编译器在定义时,自动的处理(实际上还是做了上面的两步):   

char s[30] = "Good News!";

三、对于字符串的处理,C++中其实是一个相对不好理解的东西,因为这涉及到了C/C++语言的指针,也就是说,无论是什么方式,它的最根本的本质是用一个指针指向了存放字符串的地址。string这个“类”除了指针外,还扩展了常用的一些处理函数在里面,比如字符串截取之类的。

四、还有一种比较容易混的:

char *str = "Hello World!";

说的是,定义一个char指针str,它指向字符串"Hello World!"存放的地址的第一个。

五、关于字符串的处理,细说起来,还是有一些东西需要你自个去理解的,再说一次,主要还是涉及了指针,所以不太好理解。但是这些是学C/C++必需要理解的东西。指针、类、字符串,可以说是C++里的难点,多练多思考吧。

培迈学9
2023-03-31
知道答主
回答量:17
采纳率:0%
帮助的人:3575
展开全部
这个是因为String str1=new String("hello"),这样创建的话,"hello"这个字符串只属于str1这个对象拥有,并且只有当程序运行到这句话的时候才去分配空间,而String str2="hello"则不是,它是在编译时就已经确定了,程序启动时已经在内存了,所以大家可以共用。拓展:1、C++、java等编程语言中的字符串。 在java、C#中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。2、String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象.这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。//这样操作之后s1是"abc",s2是"def"。a 和 b 是不是指向同一个地址呢,这个问题在各论坛都是谈论很激烈,其实很简单,跟下这些字符串的内存地址就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
时思聪0i5
2023-04-26 · 贡献了超过103个回答
知道答主
回答量:103
采纳率:100%
帮助的人:1.9万
展开全部
直接上例子:
#include<iostream>
#include<string> //使用string类必须包含的头文件
using namespace std;
int main()
{
string str="absddf"; //直接给变量赋值
cout<<str<<endl;
return 0;
}
还有不太明白你的意思,用类名创建数组有何用意,直接创建一个字符数组就可以了。
如下:在上面的程序加上下面语句,在vc++6.0亲测可用。
string a[]={"a","b","c"};
cout<<a[1]<<a[2]<<a[0]<<endl;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户73982
2023-04-03
知道答主
回答量:38
采纳率:0%
帮助的人:7865
展开全部
#include<iostream>
#include<string>
using namespace std;
char *name[10] = { "张一", "张二", "张三", "张四", "张五", "王一", "赵一", "孙一", "章子一", "李天一" };

class Score
{
    string name[10], ch, p;
    double score1[10];
    int i, j;
public:
    Score();
    Score(char* name1[], double score2[]);
    void judge();
    void show();
};
Score::Score()
{
    for (i = 0; i<10; i++)
    {
    
        score1[i] = 0;
    }
}

Score::Score(char* name1[], double score2[])
{
    for (i = 0; i<10; i++)
    {
        name[i]=name1[i];
        score1[i] = score2[i];
    }
}

void Score::judge()
{
    double x;
    for (i = 1; i<10; i++)
    for (j = 0; j<10 - i - 1; j++)
    {
        if (name[j]<name[j + 1])
        {
            ch = name[j], name[j] = name[j + 1], name[j + 1] = ch;
            x = score1[j], score1[j] = score1[j + 1], score1[j + 1] = x;
        }
    }

}

void Score::show()
{
    for (i = 0; i<10; i++)
        cout << name[i] << " " << score1[i] << endl;
}
int main()
{
    //string name[10];
    double score1[10];
    int i;
    for (i = 0; i<10; i++)
        cin >> score1[i];
    Score a(name, score1);
    a.judge();
    a.show();

    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式