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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 16:25   #1
JustError
 
Аватар для JustError
 
Регистрация: 30.01.2012
Сообщений: 6
По умолчанию c2664

помогите разобраться и устранить ошибку.
Создаю класс файл для работы с файлом.
Header:
Код:
#include <fstream>
#include <string>
#include <iostream>
   class TFileUpdater {
     private:
       std::fstream fs;
     public:
       TFileUpdater(std::string filename);

       ~TFileUpdater();

       void AppendData(std::string data); 

       void InsertData(std::string data, int position);

       void ChangeData(std::string data, int position); 

       void DeleteData(int position, int len);

       void DeleteData(int position, char specSymbol);

       long GetFileLength();

       long GetCurrentPosition(); 
   };  


cpp:
#include "app1.h"
#include <fstream>
#include <string>
#include <iostream>

       TFileUpdater::TFileUpdater (std::string filename)
	   { 
		   fs.open(filename.c_str()) ;
	   };
       TFileUpdater::~TFileUpdater()
	   {
		   fs.close();
	   };
	   
	   void TFileUpdater::AppendData(std::string data)
	   {if(fs.is_open())
	   {fs.seekp(0, std::ios::end);
	    fs.write(data.c_str(), data.size());
	   }
	   } 

      
	   
	   void TFileUpdater::InsertData(std::string data, int position)
	   { if(fs.is_open())
		 {  std::string s;
	      position=data.size()+1;
		  fs.seekg(position,std::ios::beg);
		  fs.read(s,s.size());   /здесь, где s я объявил в функции ошибка С2664
		   if( fs.bad() ) 
		   {std::cerr<<"Error reading data\n";
		    exit( 0 );
		   }
		  fs.seekp(position);
		  fs.write(data.c_str(), data.size()); // здесь data передается в функцию, ошибку устранил с помощью .c_str
		  fs.write(s.c_str(),s.size());
		 }
	   };	
	   
	   void TFileUpdater::ChangeData(std::string data, int position)
	   { if(fs.is_open())
	   {  fs.seekp(position, std::ios::beg);
	      fs.write(data.c_str(),data.size());   //тут также ошибку устранил с помощью .c_str()

	   }
	   };
Вот сама ошибка:
error C2664: 'read' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Последний раз редактировалось ACE Valery; 25.03.2012 в 17:33.
JustError вне форума Ответить с цитированием
Старый 25.03.2012, 18:14   #2
stdio
Форумчанин
 
Аватар для stdio
 
Регистрация: 14.02.2012
Сообщений: 105
По умолчанию

у тебя VS 2010?
stdio вне форума Ответить с цитированием
Старый 25.03.2012, 18:21   #3
JustError
 
Аватар для JustError
 
Регистрация: 30.01.2012
Сообщений: 6
По умолчанию

Нет, установил VS 6.0
JustError вне форума Ответить с цитированием
Старый 25.03.2012, 19:13   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нельзя так строку читать.

читайте сначало в массив.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Error C2664 |Dexter| Общие вопросы C/C++ 2 29.05.2011 00:50
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [7]' to 'LPCWSTR' . VS.NET PE kolob2000 Qt и кроссплатформенное программирование С/С++ 2 06.07.2010 18:51
error c2664 smithana Помощь студентам 0 06.06.2009 23:08