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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 01:10   #1
elf01
Пользователь
 
Регистрация: 18.11.2011
Сообщений: 34
По умолчанию почему здесь выкидуется ошибка на счёт c_str и ToInt на счёт ostream

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <windows.h>
#include <iostream.h>
#include <fstream.h>
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
const maxlen = 255;

char promt_oem[maxlen];
CharToOem("Ââåäèòå ïðîèçâîäèòåëÿ\n", promt_oem);
cout << promt_oem;

char str_oem[maxlen], str[maxlen];
cin >> str_oem;
OemToAnsi(str_oem, str);

char prokt_oem[maxlen];
CharToOem("Ââåäèòå ìàðêó\n", prokt_oem);
cout << prokt_oem;

char stk_oem[maxlen], stk[maxlen];
cin >> stk_oem;
OemToAnsi(stk_oem, stk);

char proqt_oem[maxlen];
CharToOem("Ââåäèòå ãîä âûïóñêà\n", proqt_oem);
cout << proqt_oem;

char stq_oem[maxlen], stq[maxlen];
cin >> stq_oem;
OemToAnsi(stq_oem, stq);

char progt_oem[maxlen];
CharToOem("Ââåäèòå ïðîáåã\n", progt_oem);
cout << progt_oem;

char stg_oem[maxlen], stg[maxlen];
cin >> stg_oem;
OemToAnsi(stg_oem, stg);
}
const maxlen = 255;
struct sworker
{
char maker[maxlen];
char label[maxlen];
int year;
int km;
};

sworker arr[maxlen];
int worker_index = 0;

void readFormFile(char * fileName)
{
ifstream f;
f.open(fileName, ios::binary);
if (!f)
{
ShowMessage("Ôàéë íå íàéäåí");
return;
}
sworker worker;
worker_index = 0;
while(1)
{
f.read((char*)&worker, sizeof(worker));

if (f.eof())
break;

arr[worker_index] = worker;
worker_index++;
}
f.close();
}
void printArr()
{
for (int i = 0; i < worker_index; i++)
{
cout << i + 1;
cout << arr[i].maker;
cout << arr[i].label;
cout << arr[i].year;
cout << arr[i].km;
}
}
void readArr()
{

for (int i = 0; i < worker_index; i++)
{
strcpy(arr[i].maker, cout.c_str());
strcpy(arr[i].label, cout.c_str());
arr[i].year << cout.ToInt();
arr[i].km << cout.ToInt();
}
}
void saveToFile(char* fileName)
{
ofstream f;
f.open(fileName, ios::binary);
f.write((char*)arr, sizeof(sworker)*worker_index);
f.close();
}

//---------------------------------------------------------------------------


elf01 вне форума Ответить с цитированием
Старый 19.12.2011, 01:35   #2
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

- чисто из практики: конструкция .c_str() применяется для преобразования строки (AnsiString) в символьный массив (char * ) и действительно не является в чистом виде членом потока (ostream). То-есть вот так будет правильно (пример):
Код:
 char *pole = (AnsiString)Stroka.c_str() ;
nick42 вне форума Ответить с цитированием
Старый 19.12.2011, 01:37   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ни тот ни тот метод в принципе не члены istream/ostream.
далее, ТС вы пытаете потоки ввода и вывода.
cout это вывод, а cin ввод.
для чтения в массив чаров есть метод istream::getline.
пример
Код:
cin.getline(arr[i].maker,maxlen);
а для чтения числа достаточно оператора >>:
Код:
cin>>arr[i].year;
а в итоге можно и разом все записать, но правда обычно не выходит, изза необходимости cin.ignore...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 19.12.2011 в 01:42.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:35   #4
elf01
Пользователь
 
Регистрация: 18.11.2011
Сообщений: 34
По умолчанию почему здесь выкидуется ошибка на счёт c_str и ToInt на счёт ostream Ответить в теме

что-то ничего не понял, толком объясните что изменить там
elf01 вне форума Ответить с цитированием
Старый 19.12.2011, 21:42   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я привел примеры ввода для каждого типа члена в структуре.
тяжело применить?(причем примеры чисто для вас)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 23:07   #6
elf01
Пользователь
 
Регистрация: 18.11.2011
Сообщений: 34
По умолчанию Неработает

Оно так не работает
elf01 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему здесь выкидуется ошибка на счёт c_str elf01 C++ Builder 1 16.12.2011 15:27
счёт таблиц aoaoo Microsoft Office Excel 2 18.05.2011 21:51
посоветуйте на счёт программы managerbp Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 20.02.2011 22:17
На счёт Css v 45 Айфоша Свободное общение 1 25.08.2010 15:06
На счёт окошек Акашаев Нурлан Общие вопросы Delphi 2 26.06.2008 09:52