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

   更新日期:2024.05.07
  • 要想使用标准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++里的难点,多练多思考吧。



这个是因为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 是不是指向同一个地址呢,这个问题在各论坛都是谈论很激烈,其实很简单,跟下这些字符串的内存地址就好了。

直接上例子:
#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;

#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;
}


  • 19472535560 :C++中string和char有什么区别?
    徐适侍3601 :答:C语言string和char在字符类型、字符串类型等方面有区别。1、字符类型 char是字符类型,string是字符串类型。string可以看作是char组成的列表,在有些编程语言里没有char,只有string,例如python。如果单用引号来定义是字符类型...
  • 19472535560 :c++编程问题,string类型怎么赋值,怎么引用
    徐适侍3601 :答:string LSStr,LSStrA; //定义 LSStr = 'aabbccdd'; //赋值 LSStrA = LSStr; //同类赋值 1、不同编译环境下的C++,对字符串的处理稍有差别。2、最原始的C语言中,没有string,在C++里才有了string这个类。3、注...
  • 19472535560 :c++ 编程问题 定义一个字符串类String,有两个私有数据成员:char* co...
    徐适侍3601 :答:int main(){ String sss;cout << sss.ToBigChar() << endl;return 0;}
  • 19472535560 :C语言中有string吗?
    徐适侍3601 :答:C语言中没有string类型。string类型是 C++、java、VB等编程语言中的。 在java、C#中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。string 是C++标准程序库中的一个头文件,定义了C++标准中...
  • 19472535560 :编程问题:string类怎么保存到二进制文件中?(C++)
    徐适侍3601 :答:cout << (char*)(str1.c_str() + strlen(str1.c_str())+1) << endl;//输出第二个字符串 return 1;} 至于原来你写的程序能够正常工作,是因为你往文件里写的是string类,包含了字符串指针,而同一个进程里面...
  • 19472535560 :编程问题:怎么把string类保存到二进制文件中?
    徐适侍3601 :答:include <iostream> include <string> include <fstream> using namespace std;int main(){ string str1;string str2;int len1,len2;cin >> str1;cin >> str2;ofstream outfile("temp.txt",ios::binary);if(!
  • 19472535560 :用C++语言实现String类
    徐适侍3601 :答:cout<<"m_string的值是:\t"<<m_string<<endl;return *this;} MyString & MyString::operator=(const char* c_str){ m_size=strlen(c_str)+1;m_string=new char[m_size];memcpy(m_string,c_str,m_size)...
  • 19472535560 :c string 是什么意思
    徐适侍3601 :答:c string是一种字符数组类型,用于在C++语言中处理字符串。它是一个以空字符'\0'结尾的字符数组。在操作c string时,需要使用标准库中的头文件,或者是,同时可以使用大量的库函数,如strlen()、strcpy()、strncpy(...
  • 19472535560 :c++ 有关string函数
    徐适侍3601 :答:首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下: #include //注意这里不是string.h string.h是C字符串头文件1.声明一个C++字符串声明一个字符串变量很简单: string Str;这样我们就声明了一个字符串变量,但既然是...
  • 19472535560 :string 是什么类型的?
    徐适侍3601 :答:string属于Java中的字符串类型,也是一个引用类型,并不属于基本的数据类型。Java中基本的数据类型只有八个,分别是数值型:byte、short、int、long;浮点型:float、double;字符型:char;布尔型:boolean。Java有字符串常量池...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网