दिलचस्प पोस्ट
DOMNode IE में बराबर पहचान? तत्वों के साथ उपनिषदों में विभाजन सूची मोबाइल ब्राउज़र में स्क्रॉलबार दृश्यमान बनाएं मैं कमांड के लिए चयनित पंक्ति कैसे पार करूं? डेटा के अंदर लिंक या यूआई: दोहराएँ? पाठ में बिना अल्पविराम और बिना दशमलव अंकों के मिलान करने के लिए नियमित अभिव्यक्ति आईओएस 8 – एंटरप्राइज़ एप स्थापित नहीं कर सकता डिवि बनाम टेबल्स या सीएसएस बनाम बेवकूफ होने के नाते मैं लांग से बाइट और जावा में वापस कैसे बदलूं? सी में int64_t टाइप कैसे करें विंडोज में क्रोन जॉब सेट करने के लिए php का उपयोग करें पोस्ट क्वेरी पैरामीटर कैसे प्राप्त करें? आर में लेटेक्स टेबल बनाने के लिए उपकरण JTable + विशिष्ट फ़ील्ड छंटनी क्या मीडिया प्रश्नों को स्क्रीन के बजाय एक div तत्व के आधार पर आकार बदल सकता है? Android में एक HTTP सर्वर कैसे बनाएं?

कैसे स्ट्रिंग को C ++ में चार सरणी में कनवर्ट करना है?

मैं string को char सरणी में कनवर्ट करना चाहूंगा, लेकिन नहीं 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; } 

वेब के समाधान से एकत्रित समाधान "कैसे स्ट्रिंग को C ++ में चार सरणी में कनवर्ट करना है?"

सरल तरीके से मैं यह करने के बारे में सोच सकता हूँ:

 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; 

ठीक है, मुझे हैरान है कि कोई भी वास्तव में अच्छा जवाब नहीं दिया, अब मेरी बारी है दो मामलों हैं;

  1. एक निरंतर चार सरणी आपके लिए काफी अच्छी है ताकि आप साथ जाएं,

     const char *array = tmp.c_str(); 
  2. या आपको चार सरणी को संशोधित करने की आवश्यकता है ताकि निरंतर ठीक न हो, फिर इसके साथ ही जाएं

     char *array = &tmp[0]; 

वे दोनों ही असाइनमेंट ऑपरेशन हैं और अधिकतर समय है जो आपको जरूरी है, अगर आपको वास्तव में एक नई प्रति की आवश्यकता होती है तो अन्य दोस्तों के जवाबों का पालन करें।

यह करने का सबसे आसान तरीका यह होगा

 std::string myWord = "myWord"; char myArray[myWord.size()+1];//as 1 char space for null is also required strcpy(myArray, myWord.c_str()); 

बस strcpy साथ सरणी में स्ट्रिंग की प्रतिलिपि बनाएँ।

 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 ++ में सी से बचने के लिए यह एक बेहतर अभ्यास है, इसलिए std :: string :: copy को strcpy के बजाय विकल्प होना चाहिए

Strcpy () की कोशिश करें, लेकिन फ्रेड ने कहा, यह सी ++ है, सी नहीं है

इस तरह से प्रयास करें कि यह काम होना चाहिए।

 string line="hello world"; char * data = new char[line.size() + 1]; copy(line.begin(), line.end(), data); data[line.size()] = '\0'; 

आप strcpy() उपयोग कर सकते हैं, जैसे:

 strcpy(tab2, tmp.c_str()); 

बफर अतिप्रवाह के लिए देखें

यदि आपको स्ट्रिंग के आकार को पहले से नहीं मालूम है और यह गहराई से भिन्न हो सकता है, तो आप unique_ptr के सरणी अधिभार के साथ गतिशील रूप से आवंटित निश्चित-आकार वाले सरणी प्राप्त कर सकते हैं:

 auto tab2 = std::make_unique<char[]>(temp.size() + 1); std::strcpy(tab2.get(), temp.c_str()); 

ध्यान दें कि आपको strncpy आवश्यकता नहीं है क्योंकि सरणी पहले स्थान पर पर्याप्त रूप से बड़ी है।

ठीक है, मैं यह जानता हूं कि यह शायद मूक और सरल है, लेकिन मुझे लगता है कि यह काम करना चाहिए:

 string n; cin>> n; char b[200]; for (int i = 0; i < sizeof(n); i++) { b[i] = n[i]; cout<< b[i]<< " "; }