我需要使用std::string
来存储由fgets()
检索的数据。为此,我需要将fgets()
的char *
返回值转换为std::string
,以存储在数组中。如何实现这一点?
char* c1 = 'z';
char* c2 = 'w';
string s1{c1};
string s12{c1, c2};
char* data;
std::string myString(data);
data
仍然未初始化(为空)。 - heltonbikerdata
未初始化可能会导致 std::string
读取垃圾数据。 - Fox不确定为什么除了 Erik 以外没有人提到这一点,但根据 this page,赋值运算符可以正常工作。不需要使用构造函数、.assign() 或 .append()。
std::string mystring;
mystring = "This is a test!"; // Assign C string to std:string directly
std::cout << mystring << '\n';
=
(和+=
)内部的“new”。这似乎不会发生在像这样的文字中,而只会发生在char*
之类的东西中。这些报告是否实际泄漏在此处讨论。但如果我将分配更改为destString = std::string(srcCharPtr);
,则valgrind泄漏报告就消失了。你的情况可能有所不同。 - HostileFork says dont trust SE
char*
转换为std::string
。你的代码中char*
在哪里? - Adrian Moleconst char* c1 = "z";
可能吗? - Adrian Mole