详解string赋值

发布时间:2023-05-17

一、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 的赋值操作,提高代码的效率和安全性。