以下列方式初始化字符串有什么区别?
string s = "Hello World";
和
string s[] = {"Hello World"};
据我所知,前者是一堂课?而后者是阵列?此外,除了这两个之外还有其他方法吗?
答案 0 :(得分:5)
在第一个示例中,您定义了一个类string
的对象。
在第二个中,您声明一个未定义长度的字符串数组(由编译器计算,基于您在初始化列表中定义的对象数),并使用" Hello World初始化一个string
对象。&# 34;所以你创建了一个大小为1的数组。
string s = "Hello World";
string s2[] = {"Hello World"};
在此之后,s
和s2[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