用c ++

时间:2015-12-15 13:15:34

标签: c++

以下列方式初始化字符串有什么区别?

string s = "Hello World";

string s[] = {"Hello World"};

据我所知,前者是一堂课?而后者是阵列?此外,除了这两个之外还有其他方法吗?

3 个答案:

答案 0 :(得分:5)

在第一个示例中,您定义了一个类string的对象。 在第二个中,您声明一个未定义长度的字符串数组(由编译器计算,基于您在初始化列表中定义的对象数),并使用" Hello World初始化一个string对象。&# 34;所以你创建了一个大小为1的数组。

string s = "Hello World";
string s2[] = {"Hello World"};

在此之后,ss2[0]包含其中包含相同字符的字符串。

答案 1 :(得分:1)

声明

string s = "Hello World";

从字符串文字创建类std::string的对象,而

string s[] = {"Hello World"};

创建一个std::string个对象的数组(长度为1)。

从字符串文字构造字符串的其他方法如下:

string s("Hello World"); // using old style constructor call
string s {"Hello World"}; // using new brace initializer (preffered way)  

答案 2 :(得分:0)

#include <string>
#include <iostream>

using namespace std;

int main(void) {

    // C-style string; considered "deprecated", better use string class
    char *s1 = "Hello World";
    cout << s1 << endl;

    // Copy constructors
    string s2 = "Hellow World";
    cout << s2 << endl;

    string s3("Hello World");
    cout << s3 << endl;

    string s4{"Hello World"}; // C++11, recommended
    cout << s4 << endl;

    // Move constructor; C++11
    string s5 = move("Hello World");
    cout << s5 << endl;

    return 0;
}

这定义了一个类型为string数组,并且只包含一个代表 Hello World 字符序列的string元素。

string s[] = {"Hello World"}; // array of string; not a string by itself