C ++string长度?

我应该如何获得C ++中string的字符数?

如果您使用的是std::string ,则调用length()

 std::string str = "hello"; std::cout << str << ":" << str.length(); // Outputs "hello:5" 

如果您使用的是cstring,请调用strlen()

 const char *str = "hello"; std::cout << str << ":" << strlen(str); // Outputs "hello:5" 

或者,如果您碰巧喜欢使用Pascal样式的string(或者像Joel Spolsky 喜欢在尾部为NULL时调用它们那样的string),则只需解引用第一个字符即可。

 const char *str = "\005hello"; std::cout << str + 1 << ":" << *str; // Outputs "hello:5" 

在处理C ++string(std :: string)时,您正在查找length()或size() 。 两者都应该为您提供相同的价值。 但是,在处理C风格的string时,可以使用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 

这取决于你在说什么stringtypes。 有很多types的string:

  1. const char* – 一个C风格的多字节string
  2. const wchar_t* – 一个C风格的宽string
  3. std::string – 一个“标准”多字节string
  4. std::wstring – 一个“标准”宽string

对于3和4,可以使用.size().length()方法。

对于1,可以使用strlen() ,但必须确保stringvariables不为NULL(=== 0)

对于2,可以使用wcslen() ,但是必须确保stringvariables不是NULL(=== 0)

在非标准的C ++库中还有其他的stringtypes,比如MFC的CString ,ATL的CComBSTR ,ACE的ACE_CString等,还有诸如.GetLength()等方法。 我不记得他们的具体细节。

STLSoft库已经将这一切全部抽象出来,它们被称为string访问垫片 ,可以用来从任何types获取string长度(以及其他方面)。 因此,对于所有上述(包括非标准库的)使用相同的函数stlsoft::c_str_len() 。 这篇文章描述了它是如何工作的,因为它不是完全明显或容易的。

如果您使用旧的C风格的string而不是较新的STL风格的string,那么C运行时库中就有strlen函数:

 const char* p = "Hello"; size_t n = strlen(p); 

如果你使用std :: string,有两个常用的方法:

 std::string Str("Some String"); size_t Size = 0; Size = Str.size(); Size = Str.length(); 

如果您使用C风格的string(使用char *或const char *),那么您可以使用:

 const char *pStr = "Some String"; size_t Size = strlen(pStr); 
 string foo; ... foo.length() ... 

.length和.size是同义词,我只是认为“length”是一个稍微更清晰的单词。

 std::string str("a string"); std::cout << str.size() << std::endl; 

对于实际的string对象:

 yourstring.length(); 

要么

 yourstring.size(); 

这可能是inputstring并find其长度的最简单方法。

 // 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()); } 

获得string长度而不打扰std命名空间的最简单的方法如下

带/不带空格的string

 #include <iostream> #include <string> using namespace std; int main(){ string str; getline(cin,str); cout<<"Length of given string is"<<str.length(); return 0; } 

没有空格的string

 #include <iostream> #include <string> using namespace std; int main(){ string str; cin>>str; cout<<"Length of given string is"<<str.length(); return 0; }