Игнорировать пробел
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Привет.
В консольном приложении, строка заканчивается после знака пробел (cin >> m_string). А мне надо, чтобы только после Enter’a, а пробелы воспринимались, как и в EditBox’e диалогового окна. Что здесь можно предпринять?
В консольном приложении, строка заканчивается после знака пробел (cin >> m_string). А мне надо, чтобы только после Enter’a, а пробелы воспринимались, как и в EditBox’e диалогового окна. Что здесь можно предпринять?
б_д_в писал(а):Привет.
В консольном приложении, строка заканчивается после знака пробел (cin >> m_string). А мне надо, чтобы только после Enter’a, а пробелы воспринимались, как и в EditBox’e диалогового окна. Что здесь можно предпринять?
Код: Выделить всё
char arr[256];
cin.getline(arr,255);
Спасибо за ответ. Но, я кажется неверно сформулировал вопрос. Вопрос состоит как указано ниже, без лишних подробностей…
Все получается если в a.string1, a.string2, a.string3 нет пробелов. Если есть … программа воспринимает пробелы как нажатие Enter и раньше времени выводит не то что надо.
Код: Выделить всё
struct card
{
char *string1;
char *string2;
char *string3;
};
…………………………
main()
{
int n;
card a;
for(…)
{
a.string1 = new char[50];
cin >> a.string1;
b[n].string1 = a.string1;
a.string2 = new char[50];
cin >> a.string2;
b[n].string2 = a.string2;
a.string3 = new char[50];
cin >> a.string3;
b[n].str3 = a.string3;
n++;
}
………………………………
//Далее вывод в консоль с помощью специальной функции
}
Ещё раз для тех кто не понял: cin>> будет читать до первого разделителя, если нужно считать текст с разделителями, то нужно использовать cin.getline(), читающий до символа, передаваемого в 3-м параметре - '\n' по умолчанию.
Тогда убирай/заменяй их перед выполнением каких-то действий. И всё.б_д_в писал(а):Все получается если в a.string1, a.string2, a.string3 нет пробелов.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
#define while if
Оптимизация по размеру:
#define struct union
Увы Albor, cin.getline(a.string1(2)(3), 50, '\n') или cin.getline(a.string1(2)(3), 50) не работет...результат тот же, что и cin >> a.string1(2)(3).
Airhand, как убирать/заменять их перед выполнением (извиняюсь за тупость).
Всем спасибо.
Airhand, как убирать/заменять их перед выполнением (извиняюсь за тупость).
Всем спасибо.
Что означает выделенное красным? Должно бытьб_д_в писал(а):cin.getline(a.string1(2)(3), 50) .
Код: Выделить всё
cin.getline(a.string1,50);
cin.getline(a.string1(2)(3), …); - записано для краткости. Имеется ввиду: cin.getline(a.string1, …); cin.getline(a.string2, …); cin.getline(a.string3, …);
Использую так же как описано выше (в исходнике), только вместо cin >> a.string1(2)(3); пишу cin.getline(a.string1(2)(3), 50, '\n'); или без '\n'(оно подразумевается по умолчанию).
Использую так же как описано выше (в исходнике), только вместо cin >> a.string1(2)(3); пишу cin.getline(a.string1(2)(3), 50, '\n'); или без '\n'(оно подразумевается по умолчанию).
У тебя string (1,2,3) - это массив символов. Пробегаешся по массиву и убираешь/заменяешь пробелы.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
#define while if
Оптимизация по размеру:
#define struct union
getline() работает - проверено!б_д_в писал(а):Увы Albor... не работет...результат тот же, что и cin >> a.string1(2)(3).
...//Далее вывод в консоль с помощью специальной функции
