📜  字符数组到字符串 c++ stl - C++ (1)

📅  最后修改于: 2023-12-03 15:09:22.390000             🧑  作者: Mango

字符数组到字符串的转换(C++ STL)

在C++中,可以使用STL(标准模板库)中的string类来表示字符串,而字符数组则可以使用char或wchar_t类型来表示。本文将介绍如何将字符数组转换为字符串,并提供代码示例。

将字符数组转换为字符串

要将字符数组转换为字符串,可以使用string类的构造函数。具体而言,可以使用以下构造函数:

string(const char* s);

该构造函数将C风格的字符串(即以null结尾的字符数组)作为参数,并创建一个新的string对象来表示它。

以下是一个将字符数组转换为字符串的示例:

#include <iostream>
#include <string>

using namespace std;

int main() {
    char mychar[] = "hello world";
    string mystring(mychar);
    cout << mystring << endl;
    return 0;
}

在上面的示例中,我们首先定义了一个字符数组mychar,其值为“hello world”。然后我们创建了一个新的string对象mystring,使用上面提到的构造函数并将mychar作为参数传递。最后,我们输出了mystring的值,结果为“hello world”。

将wchar_t字符数组转换为字符串

要将wchar_t类型的字符数组转换为字符串,也可以使用string类的构造函数。此时,我们需要使用以下构造函数:

string(const wchar_t* s);

该构造函数将宽字符C风格字符串作为参数,并创建一个新的string对象来表示它。

以下是一个将wchar_t字符数组转换为字符串的示例:

#include <iostream>
#include <string>

using namespace std;

int main() {
    wchar_t mywchar[] = L"Hello, 你好";
    wstring mywstring(mywchar);
    string mystring(mywstring.begin(), mywstring.end());
    cout << mystring << endl;
    return 0;
}

在上面的示例中,我们首先定义了一个wchar_t类型的字符数组mywchar,其值为“Hello, 你好”。然后我们创建了一个新的wstring对象mywstring,使用上面提到的构造函数并将mywchar作为参数传递。接下来,我们使用string类的另一个构造函数将mywstring转换为string类型。该构造函数需要使用mywstring的begin()和end()方法作为参数,以指定要复制的范围。最后,我们输出了mystring的值,结果为“Hello, 你好”。

注意事项
  • string类是C++标准库中的一部分,因此在使用该类之前,应使用以下头文件:
#include <string>
  • 若使用wchar_t类型的字符数组,应使用wstring类代替string类,并使用相应的构造函数。
  • 当将C风格字符串转换为string对象时,构造函数将复制整个字符串(不包括null终止符),因此不需要事先计算字符串的长度。
  • 由于C++中的string类是动态数组,因此在将字符数组转换为字符串时,将为字符串分配内存,因此需要确保该内存得到释放,以避免内存泄漏。
结论

通过以上介绍和示例,我们可以得出结论:在C++中,可以使用string类的构造函数将字符数组转换为字符串。这是常规C++编程中常用的技术之一,因此我们应该熟悉如何实现它。