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; }