如何在C ++中将字符串转换为char数组?

我想转换string为chararray但不能char*。我知道如何将字符串转换为char*(通过使用malloc或在代码中发布的方式)-但这不是我想要的。我只是想转换string为char[size]数组。可能吗?


#include <iostream>

#include <string>

#include <stdio.h>

using namespace std;


int main()

{

    // char to string

    char tab[4];

    tab[0] = 'c';

    tab[1] = 'a';

    tab[2] = 't';

    tab[3] = '\0';

    string tmp(tab);

    cout << tmp << "\n";


    // string to char* - but thats not what I want


    char *c = const_cast<char*>(tmp.c_str());

    cout << c << "\n";


    //string to char

    char tab2[1024];

    // ?


    return 0;

}


HUWWW
浏览 1475回答 3
3回答

慕标5832272

好的,令我震惊的是,现在轮到我了,没人能给出一个很好的答案。有两种情况;一个恒定的字符数组是配不上你,让你一起去,const char *array = tmp.c_str();或者您需要修改 char数组,使常量不正确,然后使用char *array = &tmp[0];两者都是作业,大部分时间正是您所需要的,如果您确实需要新的副本,请遵循其他同事的答案。

当年话下

str.copy(cstr, str.length()+1); // since C++11cstr[str.copy(cstr, str.length())] = '\0';&nbsp; // before C++11cstr[str.copy(cstr, sizeof(cstr)-1)] = '\0';&nbsp; // before C++11 (safe)最好在C ++中避免使用C,因此应该选择std :: string :: copy而不是strcpy。
打开App,查看更多内容
随时随地看视频慕课网APP