Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 11:46   #1
Adminx
 
Аватар для Adminx
 
Регистрация: 17.06.2009
Сообщений: 7
Печаль Как организовать ввод строки с пробелами?

Проблема в следующем: при вводе строки, если присутствует пробел, то строка обрезается до него. Как это исправить? Так программа большая, прикрепил фалами. Жду ответов...За ранее спасибо
Вложения
Тип файла: txt QUEST.txt (2.2 Кб, 160 просмотров)
Тип файла: txt DEF.txt (998 байт, 135 просмотров)
Тип файла: txt TREE.txt (12.6 Кб, 129 просмотров)
Adminx вне форума Ответить с цитированием
Старый 14.11.2009, 13:28   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

можно использовать файловые потоки и функцию типа get()
rrrFer вне форума Ответить с цитированием
Старый 14.11.2009, 13:39   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

использовать gets(str) (заголочоный файл conio.h) или cin.getline(str) (заголочоный файл iostream.h), где str - символьный массив.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 16.11.2009, 18:14   #4
Adminx
 
Аватар для Adminx
 
Регистрация: 17.06.2009
Сообщений: 7
Радость Ок

Большое спасибо
Adminx вне форума Ответить с цитированием
Старый 19.11.2009, 10:58   #5
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

Вопрос в тему:

Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "stdio.h"
#include "string"
using namespace std;
char *s="";

int main ()
{
	cout << "Vvedite stroky- ";
	gets(s,50);
    cout<<"\n\n"<<s;
_getch();
return 0;
выдает ошибку при вводе строки. не пойму. нет, ясное дело можно использовать string. Но а если char *s то как организовать ввод?
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Старый 19.11.2009, 12:13   #6
kedbl4
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от forsaken66 Посмотреть сообщение
Вопрос в тему:

Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "stdio.h"
#include "string"
using namespace std;
char *s="";

int main ()
{
	cout << "Vvedite stroky- ";
	gets(s,50);
    cout<<"\n\n"<<s;
_getch();
return 0;
выдает ошибку при вводе строки. не пойму. нет, ясное дело можно использовать string. Но а если char *s то как организовать ввод?
читайте ошибки компилятор которые выдает
Код:
error C2661: gets: нет перегруженной функции, принимающей 2 аргументов

вот исправил чуток
Код:
#include "iostream"
#include "conio.h"
#include "stdio.h"
#include "string"
using namespace std;


int main ()
{
	char *s;
	s=new char[50];
	cout << "Vvedite stroky- ";
	fflush(stdin);
	gets(s);
    cout<<"\n\n"<<s;
    _getch();
return 0;
}

Последний раз редактировалось kedbl4; 19.11.2009 в 12:15. Причина: неправильно ввел
kedbl4 вне форума Ответить с цитированием
Старый 19.11.2009, 20:13   #7
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

аа, просто выходит память не выделена под указатель) я понял.

Код:
fflush(stdin);
а это зачем?

вообще я не так написал немного в начале

Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "stdio.h"
#include "string"
using namespace std;
char *s="";

int main ()
{
	cout << "Vvedite stroky- ";
	gets(s);
    cout<<"\n\n"<<s;
_getch();
return 0;
вот. ругалось сильно при вводе) просто надо было s=new char[50]; вот)
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.

Последний раз редактировалось forsaken66; 19.11.2009 в 20:16.
forsaken66 вне форума Ответить с цитированием
Старый 19.11.2009, 20:29   #8
kedbl4
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 28
По умолчанию

Код:
fflush(stdin);
это очистка входного потока, рекомендуется его очищать перед использованием gets();
kedbl4 вне форума Ответить с цитированием
Старый 19.11.2009, 21:15   #9
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

не рекомендую использовать gets(), эта функция не следит за тем сколько в строке символов, используйте fgets

Код:
int fgets(char*, int, FILE*);
использование на примере ввода с клавиатуры

Код:
char buf[1000]
fgets( buf,1000, stdin);
а для C++ лучше std::cin наверно

Последний раз редактировалось NiCola999; 19.11.2009 в 23:32.
NiCola999 вне форума Ответить с цитированием
Старый 19.11.2009, 22:13   #10
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

std::cin - если во вводимой строке попадется пробел то дальше строка не будет записана в переменную.

s=std::cin>>s;
влплдпа паплаол

будет -- влплдпа.

а вобщем спасибо большое, я все понял!
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение строки с пробелами phpcreator Помощь студентам 5 15.10.2009 18:13
Как в C++ организовать ввод данных в одну строчку? amdbodia Общие вопросы C/C++ 10 16.05.2009 18:03
Ввод строки с пробелами Сергей089 Помощь студентам 15 24.04.2009 23:01
КАК сделать ввод строки на русском языке vicdon Паскаль, Turbo Pascal, PascalABC.NET 4 05.11.2007 07:54
Организовать ввод данных с файла созданного в первом задании и вывод их терминал. Saniok Помощь студентам 2 25.10.2007 22:25