2015-08-14 2 views
0

Это код, который я ищу, чтобы сделатьстанд :: строка константного массива символов

std::string json_str; 
const char json[] = json_str; 

это моя попытка

const char json [json_str.size()] = {(char) json_str.c_str()}; 

Но это дает мне ошибку «слепок из«сопзИте полукокса * 'to' char 'теряет точность "

Пожалуйста, помогите. Спасибо.

+0

use json_str.c_str() он вернет const char *. –

+0

C++ не имеет массивов переменной длины. Размеры массива должны поступать из постоянной времени компиляции. – juanchopanza

+1

Вы не можете назначить непосредственно массив из выражения, которое не может быть сокращено во время компиляции. –

ответ

2
#include <string> 

int main() { 
    std::string json_str; 
    const char *json = json_str.c_str(); 
    return 0; 
} 
+3

. Это должно сопровождаться, по крайней мере, коротким обсуждением времени жизни буфера, на которое указывает 'json'. – Angew

1

Возможные решения, которые приходят на ум:

std::string json_str; 
const char* json = json_str.c_str(); 

Вы можете использовать json, пока json_str жив.

std::string json_str; 
const char* json = strdup(json_str.c_str()); 

Вы можете использовать json даже после того, как json_str нет в живых, но вы должны убедиться, что вы освободить память.