舉例來說,如果我從用戶獲得學生的姓名,並使用cin.getline(student.name, 50);
我可以指定學生姓名。我不能通過student.name = "John Doe";
明確指定學生姓名,因爲您不能僅複製一個數組,但爲什麼在我使用getline函數時會工作?有什麼不同?是不是getline()
收集一個字符數組,然後將其複製到studnet.name
呢?爲什麼cin.getline分配給字符數組,但使用'='不會?
爲了澄清,我問爲什麼,我可以使用cin.getline(student.name, 50)
指定一個學生的名字,但沒有stuent.name = "John Doe"
,是什麼2種方法(爲什麼getline()
作品和直接分配不工作)之間的差異。
'name'是個'char'數組嗎?如果是這樣,數組是不可分配的,所以你不能寫'arrayname =「blah」;'。另外,除非你有一個非常好的理由,否則你應該使用'std :: string'而不是'char'數組。 – Praetorian
@Praetorian您的評論似乎是一個合適的答案,爲什麼不這樣做呢? –
我不是問如何分配'char name [50] =「John Doe」',我問爲什麼'cin.getline(student.name,50)'工作,而直接分配does not。最後,我要問的區別是2 –