如果使用(=)初始化一个变量,实际执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去。如果不使用等号,则执行的是直接初始化。
当初始值只有一个时,使用直接初始化或者拷贝初始化都行。但当初始化要用到多个值时,只能使用直接初始化:
string s5 = "hiya"; //拷贝初始化
string s6("hiya"); //直接初始化
string s7(10, 'c'); //直接初始化,s7的内容是cccccccccc
对于多个值进行初始化时,使用拷贝初始化:
string s8 = string(10,'c'); //拷贝初始化,s8的内容是cccccccccc
上面的拷贝初始化,本质上等价于:
string temp(10, 'c'); // temp的内容是 cccccccccc
string s8 = temp; // 将temp拷贝给s8
String对象上的基本操作:
值得注意的是,在进行cin>>读取操作的时候,会自动忽略开头的空格以及换行、制表等空白符号,为的是从第一个真正的字符开始读取,直到遇见下一个空白为止。
int main()
{
string word;
while (cin >> word) // 反复读取,直至到达文件末尾
cout << word << endl; // 逐个输出单词, 每个单词后面紧跟一个换行
return 0;
}