मुझे C++ में स्ट्रिंग में वर्णों की संख्या कैसे प्राप्त करनी चाहिए?std :: string में वर्णों की संख्या कैसे प्राप्त करें?
उत्तर
आप एक std::string
उपयोग कर रहे हैं, कहते हैं length()
:
std::string str = "hello";
std::cout << str << ":" << str.length();
// Outputs "hello:5"
आप एक सी-स्ट्रिंग का उपयोग कर रहे हैं, तो फोन strlen()
।
const char *str = "hello";
std::cout << str << ":" << strlen(str);
// Outputs "hello:5"
या, यदि आप (योएल Spolsky likes to call them के रूप में या f ***** तार, जब वे एक अनुगामी शून्य है) पास्कल शैली तार का उपयोग कर, सिर्फ पहली चरित्र भिन्नता पसंद करने के लिए होता है।
const char *str = "\005hello";
std::cout << str + 1 << ":" << *str;
// Outputs "hello:5"
कौन सा सही दिमाग में पास्कल-स्टाइल स्ट्रिंग का उपयोग करेगा? – Xarn
लंबाई नहीं है() बाइट्स की संख्या वापस, वर्णों की संख्या नहीं? –
एक std :: स्ट्रिंग के लिए, यह वही बात है (जब तक आप एक चर लंबाई लंबाई एन्कोडिंग संग्रहीत नहीं कर रहे हैं, या बहु-बाइट वर्णों को संग्रहीत करने के लिए std :: स्ट्रिंग का उपयोग कर रहे हैं)। यदि आप ऐसा कर रहे हैं, तो आपको std लाइब्रेरी से कुछ भी मदद नहीं मिल रही है, इसलिए आप अपने स्वयं के स्ट्रेल को भी रोलिंग कर सकते हैं। Wstring के लिए, u16string और u32string, यह बाइट्स की बजाय वर्णों की संख्या देता है। (फिर से यह साबित करने के साथ कि यदि आप उनमें से किसी एक में चर-लंबाई एन्कोडिंग का उपयोग कर रहे हैं, तो आपको अपना खुद का स्ट्रेल रोल करना होगा)। – Eclipse
string foo;
... foo.length() ...
। लम्बाई और .size समानार्थी हैं, मुझे लगता है कि "लंबाई" थोड़ा स्पष्ट शब्द है।
आकार() कंटेनरों में सार्वभौमिक है, यद्यपि। – rlbond
आकार() निराश है क्योंकि मुझे याद है कि कुछ कार्यान्वयन में यह "लंबाई() + 1" (क्योंकि इसमें शून्य टर्मिनेटर शामिल है) वापस आ जाएगा। तो बस लंबाई() का उपयोग करें क्योंकि यह क्लीनर और अधिक पोर्टेबल है। – nlaq
@LaQuet, यदि आप मानकों-अनुपालन कंपाइलर या एसटीएल कार्यान्वयन का उपयोग नहीं कर रहे हैं तो आपके पास चिंता करने के लिए और अधिक चीज़ें हैं। – strager
std::string str("a string");
std::cout << str.size() << std::endl;
जब सी ++ तार (std :: स्ट्रिंग) के साथ काम कर, आप length() या size() के लिए देख रहे हैं। दोनों आपको एक ही मूल्य प्रदान करना चाहिए। हालांकि सी-स्टाइल स्ट्रिंग से निपटने पर, आप strlen() का उपयोग करेंगे।
#include <iostream>
#include <string.h>
int main(int argc, char **argv)
{
std::string str = "Hello!";
const char *otherstr = "Hello!"; // C-Style string
std::cout << str.size() << std::endl;
std::cout << str.length() << std::endl;
std::cout << strlen(otherstr) << std::endl; // C way for string length
std::cout << strlen(str.c_str()) << std::endl; // convert C++ string to C-string then call strlen
return 0;
}
आउटपुट:
6
6
6
6
एक वास्तविक स्ट्रिंग वस्तु के लिए:
yourstring.length();
या
yourstring.size();
आप पुराने उपयोग कर रहे हैं, सी शैली स्ट्रिंग एन के बजाय
const char* p = "Hello";
size_t n = strlen(p);
यह क्या स्ट्रिंग प्रकार आप के बारे में बात कर रहे हैं पर निर्भर करता है: सुराही, एसटीएल शैली तार, वहाँ सी चलाने समय पुस्तकालय में strlen
सुविधा नहीं होती। वहाँ तार के कई प्रकार हैं: - एक सी शैली multibyte स्ट्रिंग
const wchar_t*
- एक सी शैली विस्तृत स्ट्रिंगstd::string
- एक "मानक" multibyte स्ट्रिंगstd::wstring
-
const char*
एक " मानक "चौड़ा स्ट्रिंग
3 और 4 के लिए, आप .size()
या .length()
विधियों का उपयोग कर सकते हैं।
1 के लिए, आप strlen()
उपयोग कर सकते हैं, लेकिन आप यह सुनिश्चित करना चाहिए कि स्ट्रिंग चर शून्य नहीं है (=== 0)
2 के लिए, आप wcslen()
उपयोग कर सकते हैं, लेकिन आप यह सुनिश्चित करना चाहिए कि स्ट्रिंग चर रहा है शून्य नहीं (=== 0)
ऐसे MFC के CString
के रूप में गैर मानक सी ++ पुस्तकालयों में अन्य प्रकार स्ट्रिंग, कर रहे हैं, ATL के CComBSTR
, ऐस के ACE_CString
, और इतने पर, इस तरह के .GetLength()
के रूप में तरीकों के साथ, और इतने पर। मैं उन सभी के विनिर्देशों को याद नहीं कर सकता जो मेरे सिर के ऊपर से ठीक हैं।
STLSoft पुस्तकालयों ने इसे string access shims पर कॉल करने के साथ समझाया है, जिसका उपयोग स्ट्रिंग लम्बाई (और अन्य पहलुओं) को किसी भी प्रकार से प्राप्त करने के लिए किया जा सकता है। तो उपर्युक्त सभी (गैर-मानक लाइब्रेरी वाले सहित) के लिए एक ही फ़ंक्शन stlsoft::c_str_len()
का उपयोग कर। This article वर्णन करता है कि यह सब कैसे काम करता है, क्योंकि यह पूरी तरह से स्पष्ट या आसान नहीं है।
आप std :: स्ट्रिंग का उपयोग कर रहे हैं, उसके लिए दो सामान्य तरीके हैं:
std::string Str("Some String");
size_t Size = 0;
Size = Str.size();
Size = Str.length();
आप सी शैली स्ट्रिंग उपयोग कर रहे हैं (चार * या स्थिरांक चार * का प्रयोग करके) तो आप कर सकते हैं उपयोग करें:
const char *pStr = "Some String";
size_t Size = strlen(pStr);
यह एक स्ट्रिंग इनपुट करने और इसकी लंबाई खोजने का सबसे आसान तरीका हो सकता है।
// Finding length of a string in C++
#include<iostream>
#include<string>
using namespace std;
int count(string);
int main()
{
string str;
cout << "Enter a string: ";
getline(cin,str);
cout << "\nString: " << str << endl;
cout << count(str) << endl;
return 0;
}
int count(string s){
if(s == "")
return 0;
if(s.length() == 1)
return 1;
else
return (s.length());
}
क्या आपको लगता है कि गिनती (स्ट्रिंग) उस स्ट्रिंग :: लंबाई() नहीं करता है? स्ट्रिंग में 2 अरब से अधिक वर्ण होने पर स्ट्रिंग की एक अतिरिक्त प्रतिलिपि बनाने और नकारात्मक मूल्य लौटने के अलावा। – Eclipse
सबसे आसान तरीका एसटीडी नाम स्थान के बारे में परेशान बिना स्ट्रिंग की लंबाई प्राप्त करने के लिए के रूप में बिना किसी स्पेस के साथ/इस प्रकार है
स्ट्रिंग
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
getline(cin,str);
cout<<"Length of given string is"<<str.length();
return 0;
}
रिक्त स्थान
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
cin>>str;
cout<<"Length of given string is"<<str.length();
return 0;
}
- 1. `std :: function` के तर्कों की संख्या कैसे प्राप्त करें?
- 2. sscanf द्वारा पढ़े गए वर्णों की संख्या प्राप्त करें?
- 3. std :: string <std::string>
- 4. std :: string
- 5. std :: string
- 6. std :: string को basic_ostream में परिवर्तित करें?
- 7. ट्रांजैक्ट एसक्यूएल में स्ट्रिंग में वर्णों की संख्या कैसे प्राप्त करें, "अन्य तरीका"
- 8. std :: string को पूर्णांक
- 9. सीधे एक std :: istream से std :: string
- 10. किसी फ़ाइल से एसटीएल-वेक्टर में एक निश्चित संख्या में वर्णों की प्रतिलिपि कैसे कॉपी करें?
- 11. NSString या NSMutableString में वर्णों की संख्या?
- 12. std :: u16string, std :: u32string, std :: string, length(), आकार(), कोडपॉइंट्स और वर्ण
- 13. सामग्री को घुमाने के बिना फ़ाइल में वर्णों की संख्या कैसे प्राप्त करें
- 14. सिस्टम :: स्ट्रिंग^को std :: string में कैसे चालू करें?
- 15. std :: string को const char * में कैसे परिवर्तित करें?
- 16. std :: string में एक const char * को कैसे स्टोर करें?
- 17. एक TCHAR सरणी को std :: string में कैसे परिवर्तित करें?
- 18. std :: string :: असाइन() segfault
- 19. रिकॉर्ड की पंक्ति संख्या कैसे प्राप्त करें?
- 20. एनएसओब्जेक्ट की संदर्भ संख्या कैसे प्राप्त करें?
- 21. मुझे std :: string
- 22. ऑपरेटर std :: string() const?
- 23. std :: string का उपयोग कर दो वर्णों के साथ एक वर्ण की सभी घटनाओं को कैसे प्रतिस्थापित करें?
- 24. std :: वेक्टर <std::string> क्रैश
- 25. आरसीपीपी :: CharacterVector को std :: string
- 26. QString से std :: string को कैसे परिवर्तित करें?
- 27. रेल- टेक्स्टफील्ड से वर्णों की प्रमाणित संख्या
- 28. postgresql में टेबल की कुल संख्या कैसे प्राप्त करें?
- 29. leveldb में चाबियों की सही संख्या कैसे प्राप्त करें?
- 30. सी ++ में बड़ी संख्या की एनएच रूट कैसे प्राप्त करें?
किस तरह बिना स्ट्रिंग तार क्या आप से निपट रहे हैं? std :: स्ट्रिंग? सी स्ट्रिंग? शून्य समाप्त स्ट्रिंग? –
सबसे मूर्ख-प्रमाण तरीका इसके माध्यम से लूप के लिए होगा और पात्रों को स्वयं गिनें। – Krythic