详解string赋值(string赋值操作)

一、string赋值为空

在C++中,我们可以将string赋值为空,即为空串。这种情况下,string对象的长度为0,并且它不包含任何字符。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str = "";
    cout<<"字符串str的长度为:"<<str.length()<<endl; //输出字符串的长度
    return 0;
}

执行结果:


字符串str的长度为:0

二、string数组可以二次赋值吗

string数组可以二次赋值。我们可以先给string数组赋初值,然后通过下标对数组元素进行二次赋值。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str_arr[3] = {"hello", "world", "!"};
    str_arr[1] = "everyone";
    for(int i = 0; i < 3; i++)
    {
        cout<<str_arr[i]<<endl;
    }
    return 0;
}

执行结果:


hello
everyone
!

三、string赋值char数组

我们可以通过将字符数组赋给string来创建一个string对象。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    char ch_arr[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
    string str(ch_arr);
    cout<<str<<endl;
    return 0;
}

执行结果:


hello

四、string类型怎么赋值

我们可以通过直接将一个字符串字面值赋给string来创建一个string对象。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str = "hello";
    cout<<str<<endl;
    return 0;
}

执行结果:


hello

五、string赋值用char

我们也可以通过将单个字符赋给string来创建一个string对象。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    char ch = 'h';
    string str(1, ch);
    cout<<str<<endl;
    return 0;
}

执行结果:


h

六、string赋值字符串回收

在使用string时,它所占用的内存会自动进行回收。我们不需要手动释放它占用的内存。

七、string赋值函数

除了使用赋值号进行赋值外,C++还提供了一些函数来对string进行赋值操作。

1. assign函数

assign函数可以将指定数量的字符赋给string。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str;
    str.assign(4, 'h');
    cout<<str<<endl;
    return 0;
}

执行结果:


hhhh

2. append函数

append函数可以将指定字符串追加到string的末尾。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str = "hello";
    string str1 = "world";
    str.append(str1);
    cout<<str<<endl;
    return 0;
}

执行结果:


helloworld

3. insert函数

insert函数可以将指定字符串插入到string的指定位置。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str = "hello";
    string str1 = "world";
    str.insert(5, str1);
    cout<<str<<endl;
    return 0;
}

执行结果:


helloworld

4. replace函数

replace函数可以用指定字符串替换string中指定位置的子串。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str = "hello, this is a replace exam";
    str.replace(0, 5, "hi");
    cout<<str<<endl;
    return 0;
}

执行结果:


hi, this is a replace exam

八、string赋值崩溃

在操作string类型时,如果出现越界访问等问题,就有可能导致程序崩溃。


#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str = "hello";
    str[6] = 'a';
    cout<<str<<endl;
    return 0;
}

执行结果:


libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string

九、string赋值和new的区别

与使用new关键字手动分配内存不同,使用string赋值时,内存的申请和释放都是由系统自动完成的,不需要手动释放内存,因此更加方便和安全。

十、string赋值给qstring

Qt中也提供了Qstring类型,它也是用来表示字符串的,可以将string类型赋值给Qstring类型。


#include<iostream>
#include<string>
#include<QString>

using namespace std;

int main()
{
    string str = "hello";
    QString qstr = QString::fromStdString(str);
    cout<<qstr.toStdString()<<endl;
    return 0;
}

执行结果:


hello

总结:string是一个十分常用的数据类型,可以使用多种方法进行赋值。在实际应用中,我们可以根据需要选择合适的方法来实现string的赋值操作,提高代码的效率和安全性。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注