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;
}
Файл и CString: присвоить содержимое
1. присвоил(CSTring m_text = содержимое 1.тхт)
2. сделал поиск, добавил/удалил символы(в m_text) ...
3. переписал содержимое файла
Подскажите пожалуйста, как залить содержимое файла в CSTring переменную, и как потом эту переменную записать в файл(причем переписать содержимое файла).
Заранее спасибо!!!
Код:
где-то по любому должен быть метод, чтобы очистить уже открытый файл, но я его не нашел. вызывать два раза open как-то не кошерно.
Цитата: =MadDrift=
Мне нужно присвоить все содержимое файла переменной CString
Код:
std::ifstream ifs("test.in");
std::stringstream ss;
ss << ifs.rdbuf();
CString s = ss.str().c_str();
std::stringstream ss;
ss << ifs.rdbuf();
CString s = ss.str().c_str();
CFile Class
CStringT Class
Using CString
А если юзать STL, то и со строками работать через std::string. Имхо.
#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;
}
а мне нужно копировать тексты с textbox на string массива, что бы работать над символами..или каким образом можно работать над элементами водимые в текстбокс??
Nu posmotri MSDN po CEdit ! :mad:
Цитата: user1
Nu posmotri MSDN po CEdit ! :mad:
CEdit я помню, я много раз использовал в visual C++ 06 ! там был AppWizard, с помошю AppWizard как то легко было.. шас тоже значить надо использовать CEdit, хорошо было бы елси показали маленький пример..
Add Member Variable Wizard. Или через GetDlgItem можешь достучаться.
tendik тыб хоть указал, в кокой версии сейчас работаешь. В 2008 студии есть
Цитата: arrjj
tendik тыб хоть указал, в кокой версии сейчас работаешь. В 2008 студии есть Add Member Variable Wizard. Или через GetDlgItem можешь достучаться.
да! шас 2008й версия. вид программа Windows Form Application.
с textbox надо взять интежеры....
tendik, зачем смешивать вместе управляемый и неуправляемый код?
Если уж пишете WinForms приложение, то не лучше ли всё делать на .NET? В частности, использовать System.Collections.BitArray.
А ещё лучше для разработки приложений под платформу .NET использовать C#.
tendik, что значит "взять интежеры"? Сдаётся мне, следует использовать элемент управления NumericUpDown, а не TextBox.