Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Файл и CString: присвоить содержимое

56K
08 мая 2011 года
=MadDrift=
4 / / 19.04.2010
Здравствуйте. Мне нужно присвоить все содержимое файла переменной CString и наоборот. Причем чтоб потом видны были символы новой строки и конца файла ... т.е мне надо отредактировать файл 1.тхт примерно так:
1. присвоил(CSTring m_text = содержимое 1.тхт)
2. сделал поиск, добавил/удалил символы(в m_text) ...
3. переписал содержимое файла
Подскажите пожалуйста, как залить содержимое файла в CSTring переменную, и как потом эту переменную записать в файл(причем переписать содержимое файла).
Заранее спасибо!!!
316
08 мая 2011 года
Alm3n
889 / / 29.05.2009
Код:
int main()
{
  fstream filestr;
  char buff[50]={0};

  filestr.open ("test.txt", fstream::in);
  if (filestr.fail()==true) cout<<"not open"<<endl;
  else
    {
        filestr.get(buff,50,'\0');
        filestr.close();
        //какие-то действия со строкой
        filestr.open ("test.txt", fstream::out | fstream::trunc);
        filestr<<buff;     
    }
  filestr.close();
  return 0;
}

где-то по любому должен быть метод, чтобы очистить уже открытый файл, но я его не нашел. вызывать два раза open как-то не кошерно.
32K
08 мая 2011 года
Rififi
54 / / 04.06.2008
Цитата: =MadDrift=
Мне нужно присвоить все содержимое файла переменной CString



 
Код:
std::ifstream ifs("test.in");

std::stringstream ss;
ss << ifs.rdbuf();

CString s = ss.str().c_str();
297
08 мая 2011 года
koodeer
1.2K / / 02.05.2009
Раз уж нужно использовать CString, то разумно будет использовать и другие классы MFC/ATL. В частности, CFile.
CFile Class
CStringT Class
Using CString

А если юзать STL, то и со строками работать через std::string. Имхо.
8.2K
09 мая 2011 года
user1
71 / / 16.03.2007
Privozhu kod dvux xoroshix funkciy chteniya, zapisi tekstovix failov:

#define MAX_TEXT_FILES_LENGTH_BYTES 768*1024

void CreateFillTextFile(HWND hwnd,const CString& path,
const CString& name,CString& content)
{
::DeleteFile(path);

CString title;
::AfxGetMainWnd()->GetWindowText(title);

HANDLE hFile = ::CreateFile(path,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(hFile==INVALID_HANDLE_VALUE)
{
MessageBox(hwnd,L"error of creating file\r"+name,title,MB_ICONEXCLAMATION);
}
else
{
DWORD writen_bytes=0;
if(!::WriteFile(hFile,content,content.GetLength()*sizeof(TCHAR),&writen_bytes,0)||
writen_bytes!=content.GetLength()*sizeof(TCHAR))
MessageBox(hwnd,L"error of fill file\r"+name,title,MB_ICONEXCLAMATION);
::CloseHandle(hFile);
}
}

BOOL ReadExternalTextFile(const CString& path,CString& content,bool add_text)
{
if(::PathFileExists(path)==0)
return 0;

bool result;
BYTE FileContentTemporary[MAX_TEXT_FILES_LENGTH];

try
{
CStdioFile FileContent(path,CFile::modeRead|CFile::shareDenyNone|CFile::typeText);
const ULONGLONG length = FileContent.GetLength();
const int read_length = FileContent.Read(&FileContentTemporary,MAX_TEXT_FILES_LENGTH);
VERIFY(length>=read_length);
VERIFY(length!=MAX_TEXT_FILES_LENGTH);
FileContentTemporary[length]=0; FileContentTemporary[length+1]=0;
BOOL bunicode_text = ::IsTextUnicode(FileContentTemporary,length,0);
if(add_text)
{
if(bunicode_text)
{
content += (LPCWSTR)FileContentTemporary; }
else
{
FileContentTemporary[read_length]=0;
content += (LPCSTR)FileContentTemporary;
}
}
else
{
if(bunicode_text)
{
content = (LPCWSTR)FileContentTemporary; VERIFY(content.GetLength()==length/2);
}
else
{
FileContentTemporary[read_length]=0;
content = (LPCSTR)FileContentTemporary;
}
}
FileContent.Close();
result=1;
}
catch(...)
{
result=0;
content.Empty();
}

return result;
}
28K
10 мая 2011 года
tendik
32 / / 18.03.2008
а мне нужно копировать тексты с textbox на string массива, что бы работать над символами..или каким образом можно работать над элементами водимые в текстбокс??
8.2K
10 мая 2011 года
user1
71 / / 16.03.2007
Nu posmotri MSDN po CEdit ! :mad:
28K
11 мая 2011 года
tendik
32 / / 18.03.2008
Цитата: user1
Nu posmotri MSDN po CEdit ! :mad:



CEdit я помню, я много раз использовал в visual C++ 06 ! там был AppWizard, с помошю AppWizard как то легко было.. шас тоже значить надо использовать CEdit, хорошо было бы елси показали маленький пример..

277
11 мая 2011 года
arrjj
1.7K / / 26.01.2011
tendik тыб хоть указал, в кокой версии сейчас работаешь. В 2008 студии есть Add Member Variable Wizard. Или через GetDlgItem можешь достучаться.
28K
11 мая 2011 года
tendik
32 / / 18.03.2008
Цитата: arrjj
tendik тыб хоть указал, в кокой версии сейчас работаешь. В 2008 студии есть Add Member Variable Wizard. Или через GetDlgItem можешь достучаться.



да! шас 2008й версия. вид программа Windows Form Application.

28K
07 июня 2011 года
tendik
32 / / 18.03.2008
с textbox надо взять интежеры....
297
08 июня 2011 года
koodeer
1.2K / / 02.05.2009
Тип char в .NET имеет размер 2 байта. Поэтому никак не влезет в 8 бит.

tendik, зачем смешивать вместе управляемый и неуправляемый код?
Если уж пишете WinForms приложение, то не лучше ли всё делать на .NET? В частности, использовать System.Collections.BitArray.
А ещё лучше для разработки приложений под платформу .NET использовать C#.
297
08 июня 2011 года
koodeer
1.2K / / 02.05.2009
Тьфу... Накатал ответ, а вопрос удалён автором...

tendik, что значит "взять интежеры"? Сдаётся мне, следует использовать элемент управления NumericUpDown, а не TextBox.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог