Chapter1

作者: 不懂球的2大业 | 来源:发表于2019-11-05 00:31 被阅读0次

Q&A

1.问: C++支持使用assignment运算符“=”进行初始化(eg:int a = 0;),还支持构造函数语法(eg:int a(0);),为什么需要两种不同的初始化语法?

答:使用assignment运算符“=”进行初始化沿袭自C语言,如果对象属于内置类型,或者对象可以单一值加以初始化,这种方式就没有问题。但是如果对象需要多个初值,这种方式就没办法完成任务了。于是需要引入用来处理“多值初始化”的构造函数初始化语法(constructor initialization syntax),下面标准库中的复数就需要两个初值,一个是实部,一个是虚部:

# include <complex>
complex<double> purei(0,7);

2.问:string对象和C-style字符串的差异?

答:(1)string对象会动态地随字符串长度的增加而增加其存储空间,C-style字符串只能分配固定的空间,并期望这个固定空间可以容纳对应的字符串。(2)C-style字符串并不记录自身长度。为了判断C-style字符串长度,我们得遍历每一个元素,直到null字符出现。

KeyPoints

1.关于vector初始化的一些问题:

利用一个整数初始化时,该整数表示数组的大小,且数组中每个元素被初始化为0。

# include <vector>
vector<int> seq(seq_size);

还可以使用已有的数组初始化:

int elem_vals[seq_size] = {0,1,2,3,4};
vector<int> elem_seq(elem_vals,elem_vals+seq_size);

2.关于输入流和输出流的一些问题:

个人理解:输入输出流为屏幕、打印机、文件等提供互相交互的方法。例如cin >> var,从标准输入(键盘)获取,“流”入变量var中。再比如:

ifstream in_file("text.txt");
string word;
in_file >> word;

上面定义了一个文件输入流:in_file,in_file提供了text.txt文件和变量word的互相交互的方法,将文件的内容通过in_file“流”入变量里。

3.setw()函数作用

在C++中,setw(int n)可以用来控制输入间隔,指定后面指定读入不超过n个字符,且默认为左对齐。例子:

#include <iostream>
#include <iomanip>
#include <cstring>

using namespace std;

int main(){
    //设置字符串长度为8,但是用setw()函数控制其读取不超过4个字符
    const int max_size = 8;
    const int real_size = 4;
    char user_name[max_size];
    cout << "please enter your name:"<<endl;
    cin >>setw(real_size)>>user_name;
    cout << "the length of user_name is: "<<strlen(user_name)<<endl;
    cout << "the user_name is:"<<user_name<<endl;
    return 0;
}

结果:

//尽管输入的字符长度超过4,但是由于setw()函数的设置,使其读入字符没有超过4
please enter your name:
helloworld
the length of user_name is: 3
the user_name is:hel

相关文章

网友评论

      本文标题:Chapter1

      本文链接:https://www.haomeiwen.com/subject/ehmzvctx.html