Длина строки С++?

Как мне получить количество символов в строке на С++?

Ответ 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;
}