1. ホーム
  2. c++

[解決済み] C++で文字列をchar配列に変換する方法は?

2022-02-16 19:43:13

質問

を変換したい。 string から char の配列であって char* . 文字列を変換する方法は知っています。 char* (を使用する)。 malloc または私のコードに投稿した方法) - しかし、それは私が欲しいものではありません。私が欲しいのは、単に stringchar[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;
}

解決方法は?

最もシンプルな方法として考えられるのは

string temp = "cat";
char tab2[1024];
strcpy(tab2, temp.c_str());

安全面を考慮すると、そちらの方がいいかもしれません。

string temp = "cat";
char tab2[1024];
strncpy(tab2, temp.c_str(), sizeof(tab2));
tab2[sizeof(tab2) - 1] = 0;

またはこのような形になる可能性があります。

string temp = "cat";
char * tab2 = new char [temp.length()+1];
strcpy (tab2, temp.c_str());