Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
#1

Получить количество символов во веденной строке - C++

12.07.2012, 12:49. Просмотров 650. Ответов 8
Метки нет (Все метки)

Решил попробовать со строками поработать, сразу же возникло несколько вопросов:

1) В C++ тип string не встроен? Нужно подключать библиотеку?

2) В чем различие char от string?

3) Как использовать функции:
* strlen - получить кол-во символов в строке.
Попытался получить кол-во символов в веденной строке, возникли проблемы:
1. Нельзя получить кол-во символов в переменной типа string? ( Так ли это? )
2. Пишет использована неинициализированная локальная переменная "sTest" (sTest задается с помощью cin)
3. В чем разница, и как это влияет вобще на программу: char sTest и char *sTest?

* ToString() - перевести в строку.
Вот тут я вобще закопался... Объясните поподробнее как переводить в строку переменную какую либо? (Допустим я получил кол-во символов в строке и хочу их вывести в консоль)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2012, 12:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить количество символов во веденной строке (C++):

Нужно посчитать количество символов пунктуации (: ; ? ! , .) в веденной строке - C++
нужно посчитать количество символов пунктуации (: ; ? ! , .) в веденной строке, язык си.

Функция strlen() . Получить количество символов в строке - C++
В чем ошибка? #include <stdio.h> #include <conio.h> #include <iostream> #include <string> using namespace std; void opr(); ...

Найти количество символов всех строк файла и количество символов в определенной строке - C++
Здравствуйте! Я хотел бы попросить помощи в решении задачки! У меня не получается найти количество символов всех строчек и количество...

Найти количество символов в строке, найти заданные буквы, разделить количество букв на количество символов - C++
Написать код который сперва подсчитывает количество символов в строке а потом из этих находит буквы (a,e,y,u,i) и делит количество букв на...

Заменить в веденной строке с клавиатуры все х на у - C++
Не могу разобрать чего то не хватает в коде для функции replace и begin помогите разобраться пожалуйста ... ...

Написать программу замены во веденной строке малых букв а на заглавные Написать программу замены во веденной строке малых букв а на заглавные - C++
Написать программу замены во веденной строке малых букв а на заглавные

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.07.2012, 12:53 #2
Цитата Сообщение от Flaker Посмотреть сообщение
1) В C++ тип string не встроен? Нужно подключать библиотеку?
std::string входит в стандартную библиотеку С++, но не является встроеным

Цитата Сообщение от Flaker Посмотреть сообщение
2) В чем различие char от string?
char - целочисленный встроенный тип, предназначеный для хранения символа(один char - хранит один символ)
std::string - класс динамически расширяемой строки

Цитата Сообщение от Flaker Посмотреть сообщение
Как использовать функции:
* strlen - получить кол-во символов в строке.
функции типа strlen из string.h/cstring предназначены для Си-шных строк - массивов имеющих тип char

Цитата Сообщение от Flaker Посмотреть сообщение
1. Нельзя получить кол-во символов в переменной типа string? ( Так ли это? )
переменноя типа std::string является объектом и для нее нужно вызывать метод length

Цитата Сообщение от Flaker Посмотреть сообщение
3. В чем разница, и как это влияет вобще на программу: char sTest и char *sTest?
1-е символ
2-е указатель
как влияет - разжёвывать не будем, для этого есть литература
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.07.2012, 12:55 #3
1) Нужно подключить заголовок #include <string>

2) Две основные вещи
1. Строки с завершающим 0 нельзя обрабатывать стандартными С++ операторами и их нельзя использовать в обычных С++ выражениях.
2. Безопасность. Очень легко выйти за границы массива
3) int size = strlen(array); - размер
Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
12.07.2012, 13:01 #4
Цитата Сообщение от Flaker Посмотреть сообщение
Решил попробовать со строками поработать, сразу же возникло несколько вопросов:

1) В C++ тип string не встроен? Нужно подключать библиотеку?

2) В чем различие char от string?

3) Как использовать функции:
* strlen - получить кол-во символов в строке.
Попытался получить кол-во символов в веденной строке, возникли проблемы:
1. Нельзя получить кол-во символов в переменной типа string? ( Так ли это? )
2. Пишет использована неинициализированная локальная переменная "sTest" (sTest задается с помощью cin)
3. В чем разница, и как это влияет вобще на программу: char sTest и char *sTest?

* ToString() - перевести в строку.
Вот тут я вобще закопался... Объясните поподробнее как переводить в строку переменную какую либо? (Допустим я получил кол-во символов в строке и хочу их вывести в консоль)
1) нужно подключать #include <cstring>
2) лучше использовать для строк string, char используется как массив, т.е char name[]. Вообщем более накладно =)
3) strlen(name) вот так использовать, возвращает количество видимых симвлов. Т.е если у тебя массив char name[10], а в нём 5 символов, то strlen выведет 5, а не размер массива.

ЗЫ строки лучше испольщовать т.к их можно соединять и копировать очень просто: str1=str2; str3=str1+str2. Чтобы продлеать с char такое, нужно использовать strcpy() strcat() и др. Опять-таки более накладно.
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
13.07.2012, 13:00  [ТС] #5
Немогу я получить кол-во символов в строке типа string, пишет такую ошибку:
error C2664: strlen: невозможно преобразовать параметр 1 из "std::string" в "const char *"


Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 setlocale(0,"");
 
    string sTest;
    int nLenghtStr = 0;
 
    cout << "Введи строку: "; 
    cin >> sTest;
 
 
    nLenghtStr = strlen(sTest);
 
    cout << nLenghtStr << endl;
 
 
    system("pause");
    return 0;
Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
13.07.2012, 15:38 #6
нужно .size использовать, должно помочь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 setlocale(0,"");
 
    string sTest;
    int nLenghtStr = 0;
 
    cout << "Введи строку: "; 
    cin >> sTest;
 
 
    nLenghtStr = sTest.size();
 
    cout << nLenghtStr << endl;
 
 
    system("pause");
    return 0;
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
13.07.2012, 16:09 #7
Вам уже написали Выше.
Цитата Сообщение от Jupiter Посмотреть сообщение
переменноя типа std::string является объектом и для нее нужно вызывать метод length
Flaker
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 90
13.07.2012, 20:41  [ТС] #8
я не знаю что такое метод length
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.07.2012, 20:46 #9

Не по теме:

Цитата Сообщение от Flaker Посмотреть сообщение
я не знаю что такое метод length
вот пичалька, видать продвинутся дальше N-й страницы книги трудно?


C++
1
2
3
4
string sTest;
cout << "Введи строку: "; 
cin >> sTest;
cout << sTest.length() << endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2012, 20:46
Привет! Вот еще темы с ответами:

В веденной строке после каждого символа добавить его код - C++
Вопрос в том, как мне вывести именно после каждого символа?..а, ещё оно и не те коды пишет чего-то... #include &lt;iostream&gt; ...

Посчитать количество нулей в веденной матрице! - C++
Мой код, по непонятным мне причинам, не считает нули вводимой матрицы, не могу найти ошибку (последний ИФ) #include...

Количество символов в строке - C++
String.h class String { public: String(); ~String(); void AddText(); int Whole(); private: string textline;

Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int. - C++
Пользователь вводит двоичную строку (32 символа). Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.07.2012, 20:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru