यदि आप विंडोज / विजुअल स्टूडियो का उपयोग कर रहे हैं और आपको उपयोग करने के लिए स्ट्रिंग को परिवर्तित करने की आवश्यकता है:
#include <AtlBase.h>
#include <atlconv.h>
...
string s = "some string";
CA2W ca2w(s.c_str());
wstring w = ca2w;
printf("%s = %ls", s.c_str(), w.c_str());
एक wstring को स्ट्रिंग में बदलने के लिए एक ही प्रक्रिया (कभी-कभी आपको एक कोड पृष्ठ निर्दिष्ट करने की आवश्यकता होगी ):
#include <AtlBase.h>
#include <atlconv.h>
...
wstring w = L"some wstring";
CW2A cw2a(w.c_str());
string s = cw2a;
printf("%s = %ls", s.c_str(), w.c_str());
आप एक कोडपेज और यहां तक कि UTF8 निर्दिष्ट कर सकते हैं ( जेएनआई / जावा के साथ काम करते समय यह बहुत अच्छा है )। इस उत्तर में एक std :: wstring को utf8 std :: string में बदलने का एक मानक तरीका दिखाया गया है ।
//
// using ATL
CA2W ca2w(str, CP_UTF8);
//
// or the standard way taken from the answer above
#include <codecvt>
#include <string>
// convert UTF-8 string to wstring
std::wstring utf8_to_wstring (const std::string& str) {
std::wstring_convert<std::codecvt_utf8<wchar_t>> myconv;
return myconv.from_bytes(str);
}
// convert wstring to UTF-8 string
std::string wstring_to_utf8 (const std::wstring& str) {
std::wstring_convert<std::codecvt_utf8<wchar_t>> myconv;
return myconv.to_bytes(str);
}
यदि आप कोडपेज़ के बारे में अधिक जानना चाहते हैं तो सॉफ्टवेयर पर जोएल पर एक दिलचस्प लेख है: संपूर्ण न्यूनतम हर सॉफ्टवेयर डेवलपर बिल्कुल, यूनिकोड और चरित्र सेट के बारे में सकारात्मक रूप से जानना चाहिए ।
ये CA2W (कन्वर्ट एएनसी को वाइड = यूनिकोड) मैक्रोज़ एटीएल और एमएफसी स्ट्रिंग रूपांतरण मैक्रोज़ का हिस्सा हैं , जिनमें नमूने शामिल हैं।
कभी-कभी आपको सुरक्षा चेतावनी # 4995 'को अक्षम करने की आवश्यकता होगी, मुझे अन्य वर्कअराउंड की जानकारी नहीं है (मेरे लिए यह तब होता है जब मैं वीएस2012 में विंडोजएक्सपी के लिए संकलित करता हूं)।
#pragma warning(push)
#pragma warning(disable: 4995)
#include <AtlBase.h>
#include <atlconv.h>
#pragma warning(pop)
संपादित करें:
खैर, इस लेख के अनुसार जोएल का लेख ऐसा प्रतीत होता है: "मनोरंजन करते समय, यह वास्तविक तकनीकी विवरण पर बहुत हल्का है"। आलेख: हर प्रोग्रामर को बिल्कुल, सकारात्मक और पाठ के साथ काम करने के लिए एन्कोडिंग और चरित्र सेट के बारे में जानने की आवश्यकता है ।
strings
8-बिट अक्षर स्वीकार करता है। क्या यह पहले से ही UTF-8 में कूटबद्ध है?