我想轉換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;}
3 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
好的,令我震驚的是,現在輪到我了,沒人能給出一個很好的答案。有兩種情況;
一個恒定的字符數組是配不上你,讓你一起去,
const char *array = tmp.c_str();
或者您需要修改 char數組,使常量不正確,然后使用
char *array = &tmp[0];
兩者都是作業,大部分時間正是您所需要的,如果您確實需要新的副本,請遵循其他同事的答案。

當年話下
TA貢獻1890條經驗 獲得超9個贊
str.copy(cstr, str.length()+1); // since C++11
cstr[str.copy(cstr, str.length())] = '\0'; // before C++11
cstr[str.copy(cstr, sizeof(cstr)-1)] = '\0'; // before C++11 (safe)
最好在C ++中避免使用C,因此應該選擇std :: string :: copy而不是strcpy。
- 3 回答
- 0 關注
- 1507 瀏覽
添加回答
舉報
0/150
提交
取消