【发布时间】:2020-07-12 23:12:55
【问题描述】:
在 c++ 中假设我有:
string s[] = {"red","green","blue"} ;
char c[50] ;
我想做一个这样的任务:
c = s[0] ;
我该怎么做???
【问题讨论】:
-
char c[50]不是指针类型,顺便说一句 - 将其视为与放置char c0, c1, c2, c3, c4相同的东西 - 所以您需要将string的字符复制到c而不仅仅是分配一个指针/引用或将char c[50]更改为指向堆分配数组的指针或引用。 -
也就是说,如果你想编写 C++ 而不是 C,那么使用像
std::vector和std::array这样的 STL 类型,并避免使用原始指针和原始数组。 -
strncpy(c, s.c_str(), 50);后跟c[49] = '\0';以确保稳健性 -
顺便说一句,您通常可以使用 c_str() 函数,例如,如果旧函数需要 const char*。
标签: c++