Как мне получить количество символов в строке на С++?
Длина строки С++?
Ответ 1
Если вы используете std::string
, вызовите length()
:
std::string str = "hello";
std::cout << str << ":" << str.length();
// Outputs "hello:5"
Если вы используете c-строку, вызовите strlen()
.
const char *str = "hello";
std::cout << str << ":" << strlen(str);
// Outputs "hello:5"
Или, если вам нравится использовать строки в стиле Pascal (или строки f *****, как Joel Spolsky любит их называть когда у них есть конечный NULL), просто разыщите первый символ.
const char *str = "\005hello";
std::cout << str + 1 << ":" << *str;
// Outputs "hello:5"
Ответ 2
При работе со строками С++ (std::string) вы ищете length() или size(). Оба должны предоставить вам то же значение. Однако при работе со строками C-Style вы должны использовать 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
Ответ 3
Это зависит от того, какой тип строки вы говорите. Существует много типов строк:
-
const char*
- многобайтовая строка в стиле C -
const wchar_t*
- широкая строка в стиле C -
std::string
- "стандартная" многобайтовая строка -
std::wstring
- "стандартная" широкая строка
Для 3 и 4 вы можете использовать методы .size()
или .length()
.
Для 1 вы можете использовать strlen()
, но вы должны убедиться, что строковая переменная не является NULL (=== 0)
Для 2 вы можете использовать wcslen()
, но вы должны убедиться, что строковая переменная не является NULL (=== 0)
Существуют и другие типы строк в нестандартных библиотеках С++, таких как MFC CString
, ATL CComBSTR
, ACE ACE_CString
и т.д., с такими методами, как .GetLength()
и т.д. Я не могу вспомнить их особенности прямо с головы.
Библиотеки STLSoft абстрагировали все это с помощью того, что они называют плагины доступа к строке, которые могут использоваться для получения длины строки (и других аспектов) любого типа. Итак, для всех вышеперечисленных (включая нестандартные библиотеки), используя ту же функцию stlsoft::c_str_len()
. Эта статья описывает, как все это работает, поскольку это не все полностью очевидно или легко.
Ответ 4
Если вы используете старую строку C-стиля вместо новых строк в стиле STL, там функция strlen
в библиотеке времени выполнения C:
const char* p = "Hello";
size_t n = strlen(p);
Ответ 5
если вы используете std::string, для этого есть два общих метода:
std::string Str("Some String");
size_t Size = 0;
Size = Str.size();
Size = Str.length();
если вы используете строку стиля C (используя char * или const char *), вы можете использовать:
const char *pStr = "Some String";
size_t Size = strlen(pStr);
Ответ 6
string foo;
... foo.length() ...
.length и .size являются синонимами, я просто думаю, что "длина" - это немного более четкое слово.
Ответ 7
std::string str("a string");
std::cout << str.size() << std::endl;
Ответ 8
для фактического строкового объекта:
yourstring.length();
или
yourstring.size();
Ответ 9
Это может быть самый простой способ ввести строку и найти ее длину.
// 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());
}
Ответ 10
Самый простой способ получить длину строки, не беспокоясь о пространстве имен std, выглядит следующим образом
строка с/без пробелов
#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;
}