将 char\* 转换为 std::string

新手上路,请多包涵

我需要使用 std::string 来存储由 fgets() 检索到的数据。为此,我需要将 char* 返回值从 fgets() 转换为 std::string 以存储在数组中。如何才能做到这一点?

原文由 Jonathan Prior 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

std::string 有一个构造函数:

 const char *s = "Hello, World!";
std::string str(s);

请注意,此构造深度复制 ss 处的字符列表不应为 nullptr ,否则行为未定义。

原文由 Jesse Beder 发布,翻译遵循 CC BY-SA 4.0 许可协议

从 C 风格字符串转换为 C++ 标准字符串更容易

我们可以通过三种方式将 C 样式字符串转换为 C++ 标准字符串

第一个是使用构造函数,

 char chText[20] = "I am a Programmer";
// using constructor
string text(chText);

第二个是使用 string::assign 方法

// char string
char chText[20] = "I am a Programmer";

// c++ string
string text;

// convertion from char string to c++ string
// using assign function
text.assign(chText);

第三个是赋值运算符(=),其中字符串类使用运算符重载

// char string
char chText[20] = "I am a Programmer";

// c++ string
// convertion from char string to c++ string using assignment operator overloading
string text = chText;

第三个也可以像下面这样写 -

 // char string
char chText[20] = "I am a Programmer";

// c++ string
string text;

// convertion from char string to c++ string
text = chText;

第三个有点直截了当,可以在两种情况下使用

  1. 在我们声明和初始化的时候
  2. 当我们在对象创建或初始化后多次分配时

原文由 SHAH MD IMRAN HOSSAIN 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题