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:
-   const char*– 一个C风格的多字节string
-   const wchar_t*– 一个C风格的宽string
-   std::string– 一个“标准”多字节string
-   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; }