Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 2
Регистрация: 03.10.2021
Сообщений: 138

Как сравнить переменную со строкой?

11.10.2021, 19:02. Показов 2516. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
 #include <iostream>
using namespace std;
 
int main() {
    string a;
    cin >> a;
    if (a != "done") {
        cout << a;
    }
 
}
это должно выводить всё, что будет введено, кроме если введено done. Но, почему-то выпадает ошибка c2446, мол нужно преобразовать "done" в int тип. но ведь мне нужна строка. Изначально пробовал переменную a сделать char типом, тоже не получалось
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.10.2021, 19:02
Ответы с готовыми решениями:

Как сравнить строку char* с строкой из буфера
не могу сравнить две строки одна с буфера другая в char. Buf берётся с памяти процесса. #define MaxLen 10 char Buf; char *input1...

Как сравнить строчку и переменную
Пишу код, хочу сравнить строчку, которую ввожу, если ввожу определенное предложение\слово, то выводить ответ #include &lt;iostream&gt; ...

Как сравнить переменную со строкой базы данных или как присвоить переменной значение строки базы данных ?
подскажите пожалуйста как мне сравнить переменную типа string с каким нибудь строкой базы данных. Или как присвоить значение строки базы...

24
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
12.10.2021, 10:24
Студворк — интернет-сервис помощи студентам
Royal_X, но std vector постоянно меняет свой адрес в памяти по мере того, что ты называешь в своём понимании "динамическим размером"
Он при вызове push_back вызывает delete[] для одного массива в памяти и создаёт new для нового
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
12.10.2021, 10:39
Цитата Сообщение от Слава57 Посмотреть сообщение
это должно выводить всё, что будет введено, кроме если введено done
Видимо для изначальной идеи нужно делать так:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
int main() {
    std::string a;
    std::cin >> a;
    while (a != std::string("done")) {
        std::cout << a;
        std::cin >> a;
    }
}
Добавлено через 2 минуты
Из строкового литерала "done" должна быть предварительно получена строка типа std::string, и вот с ней уже можно производить операцию сравнения.

А вот с массивом char или строковым литералом так нельзя, там нужен strcmp
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13238 / 6870 / 1827
Регистрация: 18.10.2014
Сообщений: 17,415
12.10.2021, 10:45
Цитата Сообщение от Royal_X Посмотреть сообщение
вот это
Так "это" и есть то, о чем я говорил выше. Массив в std::vector такой же "динамический", как и ваше new [10]. То есть когда 10 станет мало, будет создан новый массив через new [20]. Если вы хотите пользоваться голым new [], то вам придется делать все то же самое самостоятельно.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6702 / 3121 / 1064
Регистрация: 01.06.2021
Сообщений: 12,082
12.10.2021, 13:17
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
То есть когда 10 станет мало, будет создан новый массив через new [20].
у меня reserve() работает так:
например, если создаю так массив
C++
1
2
vector<int> arr;
arr.reserve(10);
то при попытке записать 11-й элемент capacity (не size) станет не 20, а 32 (т.к. это минимальное число, охватывающее 11 элементов, которое можно представить в виде 2^n). Чтобы подравнять capacity с size придется использовать shrink_to_fit.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
12.10.2021, 13:26
Royal_X, он говорит про общий принцип. Эффект динамичности размера достигается выделением нового участка, и копированием в него содержимого старого. Конкретные стратегии увеличения нового участка, и то, что std::vector фактически не содержит внутри массивы (память выделяется отдельно, элементы в ней конструируются отдельно: такая конструкция не является массивом с точки зрения С++), уже не слишком важно в этом ключе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2021, 13:26

Как сравнить строку ввода со строкой List[] ?
Подскажите пожалуйста как решить? Имеется строка на ввод/вывод и List. Как написать чтобы вводимая строка с клавиатуры сравнивалась с...

Как сравнить значение текстого узла с какой-либо строкой?
Вопрос по Xpath. У меня есть следующий XML-документ : &lt;SettingsList&gt; &lt;List&gt; &lt;item&gt; &lt;key&gt; &lt;string&gt; aasas ...

Как можно сравнить число со строкой, не используя Parse и TryParse?
Здравствуйте, форумчане. Препод подкинул задачку: разработайте метод для преобразования строки символов с максимальной длиной в 40 знаков...

String с точной строкой ( @ ). Как вписать переменную?
Есть такой код: var str = pole; // 1,2,3... var string = @&quot;lalala...&quot;; как в string вписать переменную str? Просто...

Как работать cо строкой, если её вводить через одну переменную...
Смысл в том, что бы одну строку из 7 цифр можно было представить отдельными цифрами или парами цифр. Что бы ими можно было сравнивать и...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru