मैं इरलिच के साथ एक प्रोग्राम बनाने की कोशिश कर रहा हूं जो लुआ में लिखी गई कॉन्फ़िगरेशन फ़ाइल से कुछ चीजें लोड करता है, जिसमें से एक विंडो शीर्षक है। हालांकि, lua_tostring
फ़ंक्शन const char*
देता है जबकि इरलिच डिवाइस की विधि setWindowCaption
const wchar_t*
की अपेक्षा करता है। मैं lua_tostring
द्वारा लौटाई गई स्ट्रिंग को कैसे परिवर्तित कर सकता हूं?कन्वर्ट चार * को कॉन्स्टर्ट करने के लिए wchar_t *
5
A
उत्तर
3
एसओ पर कई प्रश्न हैं जो विंडोज़ पर समस्या का समाधान करते हैं। नमूना पोस्ट:
एक मंच नास्तिक विधि http://ubuntuforums.org/showthread.php?t=1579640 पर तैनात नहीं है। इस साइट से स्रोत है (मुझे आशा है कि मैं किसी भी कॉपीराइट का उल्लंघन नहीं कर रहा हूँ):
#include <locale>
#include <iostream>
#include <string>
#include <sstream>
using namespace std ;
wstring widen(const string& str)
{
wostringstream wstm ;
const ctype<wchar_t>& ctfacet =
use_facet< ctype<wchar_t> >(wstm.getloc()) ;
for(size_t i=0 ; i<str.size() ; ++i)
wstm << ctfacet.widen(str[i]) ;
return wstm.str() ;
}
string narrow(const wstring& str)
{
ostringstream stm ;
const ctype<char>& ctfacet =
use_facet< ctype<char> >(stm.getloc()) ;
for(size_t i=0 ; i<str.size() ; ++i)
stm << ctfacet.narrow(str[i], 0) ;
return stm.str() ;
}
int main()
{
{
const char* cstr = "abcdefghijkl" ;
const wchar_t* wcstr = widen(cstr).c_str() ;
wcout << wcstr << L'\n' ;
}
{
const wchar_t* wcstr = L"mnopqrstuvwx" ;
const char* cstr = narrow(wcstr).c_str() ;
cout << cstr << '\n' ;
}
}
2
आप उपयोग कर सकते हैं mbstowcs:
wchar_t WBuf[100];
mbstowcs(WBuf,lua_tostring(/*...*/),99);
या अधिक सुरक्षित:
const char* sz = lua_tostring(/*...*/);
std::vector<wchar_t> vec;
size_t len = strlen(sz);
vec.resize(len+1);
mbstowcs(&vec[0],sz,len);
const wchar_t* wsz = &vec[0];
संबंधित मुद्दे
- 1. कैसे स्थिरांक चार को wchar_t * कन्वर्ट करने के लिए *
- 2. Convert चार * wchar_t के लिए * mbstowcs_s
- 3. चार बनाम wchar_t
- 4. कैसे स्थिरांक चार को स्थिरांक WCHAR * कन्वर्ट करने के लिए *
- 5. परिवर्तित चार [] सरणी चार करने के लिए **
- 6. wchar_t?
- 7. कैसे एक प्रणाली के लिए चार * कन्वर्ट करने के लिए :: स्ट्रिंग^
- 8. QChar wchar_t को
- 9. क्या asprintf के लिए wchar_t संस्करण है?
- 10. चार wchar_t char16_t char32_t बनाम बनाम बनाम (C++ 11)
- 11. कैसे खिड़कियों कन्वर्ट करने के लिए mshtml.IHTMLDocument2
- 12. मैं jstring को wchar_t *
- 13. एचटीएमएल यातायात को 'कन्वर्ट' करने के लिए समाधान? प्रॉक्सी? (रिले)
- 14. स्विफ्ट में UIImage को CIImage कन्वर्ट करने के लिए 3.0
- 15. कैसे बूलियन वस्तु को स्ट्रिंग वस्तु कन्वर्ट करने के लिए?
- 16. कैसे std :: वेक्टर <अहस्ताक्षरित चार> वेक्टर को नकल के बिना <char> कन्वर्ट करने के लिए?
- 17. wchar_t * को स्ट्रिंग
- 18. कन्वर्ट करने के लिए टूल (अनुवाद) सी जाने के लिए?
- 19. परिवर्तित QString चार करने के लिए *
- 20. सी ++ त्रुटि: करने के लिए 'स्थिरांक चार *'
- 21. सी ++, करने के लिए 'स्थिरांक चार *'
- 22. कैसे इंट कास्ट करने के लिए Kotlin में चार को
- 23. प्रत्येक चार वर्णों को विभाजित करने के लिए रूबी रेगेक्स
- 24. एक चार स्टैक को परिभाषित करने के लिए कैसे?
- 25. सी चार को चार *
- 26. कन्वर्ट स्ट्रिंग
- 27. फ़ंक्शन के लिए चार बफर पास करने और बफर के आकार को प्राप्त करने के लिए
- 28. एकल बैकस्लैश से Maven के $ {project.basedir} कन्वर्ट करने के लिए
- 29. wchar_t सूचक
- 30. हेक्स स्ट्रिंग को वापस चार
स्पष्ट करने के लिए है कि भूल मैं उबंटू पर हूँ। अब आपके उत्तर का परीक्षण कर रहे हैं ... – Giaphage47
आम तौर पर, मैंने पाया है कि उबंटू में सी ++ में विस्तृत पाठ से निपटने के लिए डिफ़ॉल्ट लोकेल सेट करना आवश्यक है। यह बहुत विडंबनापूर्ण है कि कार्यान्वयन कैसे व्यवहार करते हैं। यूनिक्स-भूमि के रूप में यूटीएफ -8 के साथ लोकेल संकीर्ण-व्यापक रूपांतरण के लिए शायद ही महत्वपूर्ण है, लेकिन सेट किया जाना चाहिए, जबकि विंडोज़ में विभिन्न एकल-बाइट एन्कोडिंग के साथ लोकेल बहुत महत्वपूर्ण है, लेकिन पहले से ही डिफ़ॉल्ट रूप से सेट है। –