Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Работа со строкой.


Автор: stat007 17.1.2009, 22:02
Ребят помогите разораться!
Есть программа, которая создаёт файл и дописывает в него данные введённый с клавиатеры. Однако она записывает 2 слова в виде массива! Ка объявить строку string, что бы можно было ввести несколько слов??? 

Код

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    char num[30], name[30];
    ofstream output("Base.txt", ios::app);         
    cin>>num>>name;
    cout<<"Danie zaneseni v file!"<<endl;
    output<<num<<" "<<name<<endl;
    return 0;
}

Автор: pan2004 17.1.2009, 22:25
Не пойму что нужно)
Два варианта:
1. Создать массив char*(или vector<string>) и записывать в него сколько надо слов в цикле
2. Использовать cin.get() cin.getline() чтобы не разбивалось на отдельные слова

Автор: mes 17.1.2009, 22:27
Цитата(stat007 @  17.1.2009,  21:02 Найти цитируемый пост)
Ка объявить строку string, что бы можно было ввести несколько слов??? 

Вопрос не понят.. Что мешает вводить слова через пробел ? 
 smile 

P.S. а для строки на Cpp использовать предпочтительнее  std::string нежели char *;

Добавлено через 2 минуты и 7 секунд
Цитата(pan2004 @  17.1.2009,  21:25 Найти цитируемый пост)
Не пойму что нужно)

 smile  ура..я не одинок )) 

Автор: stat007 17.1.2009, 22:36
Цитата

Не пойму что нужно)

Просто нужно объявить не так: 
Код

char num[30], name[30];

а просто:
Код

string st;

Цитата

 Использовать cin.get() cin.getline() чтобы не разбивалось на отдельные слова

Пытался, так всё верно, но в файл незаписывает!

Автор: mes 17.1.2009, 22:59
Цитата(stat007 @  17.1.2009,  21:36 Найти цитируемый пост)
Просто нужно объявить не так: 
а просто:


Ну и что мешает ? Чем полнее Вы сформулируете свой вопрос, тем точнее и быстрее Вам сможет помочь кто нибудь из форумчан.

см подпись ниже ответившего.  smile 

Автор: bsa 18.1.2009, 00:55
stat007
Код
std::string num, name;
std::getline(std::cin, num);
std::getline(std::cin, name);

Автор: stat007 18.1.2009, 10:32
спасибо bsa, теперь всё нормально!!

Тема закрыта!  smile 

Автор: bsa 18.1.2009, 20:54
stat007

M
bsa
Если вопрос исчерпан, то пометь тему решенной

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)