为什么我将字符串转换为C字串尝试这种方式失败?

问题描述 投票:0回答:1

我在VS2019中的代码无法工作.在代码的最后一行编译器抛出了一个错误。

#include <iostream>
#include <string>
using namespace std;

struct struct1
{
    string name;
};

void main()
{
    struct1* obj1 = new struct1();
    obj1->name = "Hello";

    // compiler says 'initializing': cannot convert from 'const _Elem *' to 'char [25]'
    char str[25] = (obj1->name).c_str();

}
c++ string c-strings
1个回答
3
投票

c_str() 返回一个指向 开始 的字符数据。你需要将字符复制到你的数组中,使用类似于 strncpy().


1
投票

有很多方法可以做到这一点,但首先你应该改变char数组的初始化方式,因为你做错了。

这是同样的程序,但工作方式是

#include <iostream>

using namespace std;

struct struct1
{
    string name;
};



int main()
{
    struct1* obj1 = new struct1();
    obj1->name = "Hello";
    char str[25] = "";
    memcpy(&str,obj1->name.c_str(),obj1->name.size());
    cout << str << endl;
}
© www.soinside.com 2019 - 2024. All rights reserved.