बनाने एसटीडी::स्ट्रिंग से int8_t सरणी

0

सवाल

में कुछ कोड int8_t[] प्रकार के बजाय प्रयोग किया जाता है के char[].

int8_t title[256] = {'a', 'e', 'w', 's'};
std::string s(title); // compile error: no corresponding constructor

कैसे करने के लिए ठीक से और सुरक्षित रूप से बनाने के लिए एक std::string यह से?

जब मुझे क्या करना होगा cout << s; मैं चाहता हूँ कि यह प्रिंट aews, के रूप में अगर char[] प्रकार पारित किया गया था करने के लिए के निर्माता ।

c++ casting char integer
2021-11-23 15:34:12
2

सबसे अच्छा जवाब

2

यहाँ आप कर रहे हैं

int8_t title[256] = { 'a', 'e', 'w', 's' };
std::string s( reinterpret_cast<char *>( title ) );
std::cout << s << '\n';

या आप उपयोग कर सकते हैं भी

std::string s( reinterpret_cast<char *>( title ), 4 );
2021-11-23 15:45:55

की तरह लगता है एक बुरा विचार के बिना एक स्पष्ट अशक्त टर्मिनेटर सरणी में.
dave

@डेव और क्यों आप का फैसला किया है कि वहाँ कोई अशक्त समाप्त चरित्र?
Vlad from Moscow

वहाँ होना चाहिए 252 रिक्त terminators में है कि सरणी. :-)
Ted Lyngmo

@डेव हालांकि मैं एक ही बात है और फिर याद आया कि सभी लापता initializers सेट कर रहे हैं करने के लिए 0तो , यह है 252 रिक्त terminators ।
NathanOliver

आह ठीक है, नहीं देखा था 256 आकार. ठीक है, तो इस मामले में
dave
1

std::string की तरह अन्य कंटेनरों निर्माण किया जा सकता है की एक जोड़ी का उपयोग iterators. इस निर्माता का उपयोग करेगा अंतर्निहित रूपांतरण यदि उपलब्ध हो तो, इस तरह के रूप में परिवर्तित करने int8_t करने के लिए char.

int8_t title[256] = {'a', 'e', 'w', 's'};
std::string s(std::begin(title), std::end(title));

ध्यान दें कि इस समाधान की नकल के पूरे सरणी सहित, अप्रयुक्त बाइट्स है । यदि सरणी अक्सर बहुत बड़ा की तुलना में यह करने की जरूरत है, आप कर सकते हैं के लिए देखो अशक्त टर्मिनेटर के बजाय

int8_t title[256] = {'a', 'e', 'w', 's'};
auto end = std::find(std::begin(title), std::end(title), '\0');
std::string s(std::begin(title), end);
2021-11-23 15:38:17

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में