C++: переменные типа string

Модератор: Модераторы разделов

Ответить
Аватара пользователя
ArkanJR
Сообщения: 1166
Статус: Профан

C++: переменные типа string

Сообщение ArkanJR »

Набросал небольшую программу, выводящую телефонный код города, при вводе его названия. Но вылезла следующая проблема: при наличии пробела в названии города, например, Нижний Новгород, телефонный код не выводится. Пока относительно выкрутился, задействовав вместо пробела знак "_" (Нижний_Новгород).

Есть ли возможность реализовать вывод телефонного кода при вводе имеющего пробел названия города?

Код: Выделить всё

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string a1 = "пенза";
string a2 = "нижний_новгород";
string z;
cout << "Введите название города: ";
cin >> z;
cout << endl;
if (z == a1)
cout << "8412" << endl;
if (z == a2)
cout << "831" << endl;
return 0;
}
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: C++: переменные типа string

Сообщение Bizdelnick »

Для прояснения:

Код: Выделить всё

#include <iostream>
using namespace std;
int main()
{
    string s;
    while (cin >> s) {
        cout << "s = " << s << endl;
    }
    return 0;
}

P. S. На фига тут C++?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1166
Статус: Профан

Re: C++: переменные типа string

Сообщение ArkanJR »

Bizdelnick писал(а):
16.08.2014 19:31
P. S. На фига тут C++?

Просто решил посмотреть на string "в деле" кроме примера "Война и мир" в "Самоучителе C++" Крупника.
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: C++: переменные типа string

Сообщение NickLion »

Ввод строки в C++, так же как и C происходит до первого пробелного символа (пробел, табуляция, перевод строки, может ещё и вертикальная табуляция, не помню). Если название может содержать пробелы, то следует вводить строку до символа перевода строки. Для этого есть функция std::getline, использовать так:

Код: Выделить всё

std::string s;
std::getline(std::cin, s);

Ну, если используете using namespace std, что лично я не люблю, то можно так:

Код: Выделить всё

string s;
getline(cin, s);


Bizdelnick, человек изучает C++, что Вы так сразу. Да и std::string полезен хотя бы тем, что не нужно выдумывать велосипед под названием "а сколько символов может занимать X".
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1166
Статус: Профан

Re: C++: переменные типа string

Сообщение ArkanJR »

NickLion писал(а):
17.08.2014 10:16
Ввод строки в C++, так же как и C происходит до первого пробелного символа (пробел, табуляция, перевод строки, может ещё и вертикальная табуляция, не помню). Если название может содержать пробелы, то следует вводить строку до символа перевода строки. Для этого есть функция std::getline, использовать так:

Код: Выделить всё

std::string s;
std::getline(std::cin, s);

Ну, если используете using namespace std, что лично я не люблю, то можно так:

Код: Выделить всё

string s;
getline(cin, s);

Спасибо за помощь, вроде разобрался:

Код: Выделить всё

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string a1 = "пенза";
string a2 = "нижний новгород";
string z;
cout << "Введите название города: ";
getline (cin, z);
cout << endl;
if (z == a1)
cout << "8412" << endl;
if (z == a2)
cout << "831" << endl;
return 0;
}
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1166
Статус: Профан

Re: C++: переменные типа string

Сообщение ArkanJR »

Есть ли возможность задать условие ИЛИ для строковых переменных? Например, что-то вроде такого:

Код: Выделить всё

string a1 = "Иванов";
string a1 = "иванов";
string z;
if(z == a1 ИЛИ == a2)
{
cout << "рабочий телефон: 11-11";
}
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: C++: переменные типа string

Сообщение Bizdelnick »

А причём тут строковые переменные? Оператор "или" один - ||.

Код: Выделить всё

string a1 = "Иванов";
string a2 = "иванов";
string z = "иванов";
if((z == a1) || (z == a2)) {
    cout << "рабочий телефон: 11-11";
}
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1166
Статус: Профан

Re: C++: переменные типа string

Сообщение ArkanJR »

Bizdelnick писал(а):
01.11.2014 20:28
А причём тут строковые переменные? Оператор "или" один - ||.

Для строковых переменных его можно применить? В самоучителе дан пример только для логических (bool).
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: C++: переменные типа string

Сообщение Bizdelnick »

ArkanJR писал(а):
01.11.2014 20:30
Для строковых переменных его можно применить? В самоучителе дан пример только для логических (bool).

Ну так операция сравнения даёт логический результат. Применять его надо для двух операций сравнения, независимо от типа сравниваемых величин.
Хреновый у Вас самоучитель, если там это не объясняется.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: C++: переменные типа string

Сообщение drBatty »

ArkanJR писал(а):
01.11.2014 20:30
Для строковых переменных его можно применить?

нет. Но у вас bool std:string::operator==() перегружен, т,ч. этот ваш «==» выдаёт как раз bool.

В вашем примере вообще хорошо получается: если (z==a1), то проверять второе условие оно НЕ будет (гуглить "ленивые операторы")
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить