使用成员访问运算符(。)初始化stractures中的char数组

时间:2017-07-18 17:07:26

标签: c++ arrays data-structures char

我是java开发人员,我尝试学习c ++。现在我正在学习结构。 我在互联网上看到了一个使用结构的例子(https://www.tutorialspoint.com/cplusplus/cpp_data_structures.htm)。

#include <iostream>
#include <cstring>

using namespace std;

struct Books {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};

int main( ) {
    struct Books Book1;        // Declare Book1 of type Book
    struct Books Book2;        // Declare Book2 of type Book

   // book 1 specification
   strcpy( Book1.title, "Learn C++ Programming");
   strcpy( Book1.author, "Chand Miyan"); 
   strcpy( Book1.subject, "C++ Programming");
   Book1.book_id = 6495407;
   ...


   return 0;
}

此代码正在运行,但我有一个问题:为什么编译器不允许使用行Book1.title = "Learn C++ Programming";,但他允许使用行strcpy( Book1.title, "Learn C++ Programming");。为什么Book1.title = "Learn C++ Programming";Book1.book_id = 6495407;不同(解释诅咒的类型)?

1 个答案:

答案 0 :(得分:1)

我只会使用std::string而不是char数组。除非有某些特定原因需要使用数组,否则std::string类型中有更多功能。