我是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;
不同(解释诅咒的类型)?
答案 0 :(得分:1)
我只会使用std::string
而不是char数组。除非有某些特定原因需要使用数组,否则std::string
类型中有更多功能。