Создайте текстовый файл и напишите ему на C ++?

Я использую Visual C ++ 2008. Я хочу создать текстовый файл и написать ему.

char filename[]="C:/k.txt"; FileStream *fs = new FileStream(filename, FileMode::Create, FileAccess::Write); fstream *fs =new fstream(filename,ios::out|ios::binary); fs->write("ghgh", 4); fs->close(); 

Здесь отображается ошибка FileStream

Вы получаете ошибку, потому что у вас есть fs объявленный дважды двумя разными способами; но я не буду хранить ничего из этого кода, так как это странное сочетание C ++ и C ++ / CLI.

В вашем вопросе не ясно, хотите ли вы делать стандартные C ++ или C ++ / CLI; если вы хотите «нормальный» C ++, вы должны сделать:

 #include  #include  // ... int main() { // notice that IIRC on modern Windows machines if you aren't admin // you can't write in the root directory of the system drive; // you should instead write eg in the current directory std::ofstream fs("c:\\k.txt"); if(!fs) { std::cerr<<"Cannot open the output file."< 

Обратите внимание, что я удалил все new вещи, так как очень часто вам это не нужно на C ++ - вы можете просто выделить объект streamа в стеке и забыть о утечках памяти, которые присутствовали в вашем коде, поскольку обычные (не GC-управляемые ) указатели не подвергаются сбору мусора.

Вот примеры как для родного, так и для управляемого C ++:

Предполагая, что вы довольны родным решением, все работает отлично:

  fstream *fs =new fstream(filename,ios::out|ios::binary); fs->write("ghgh", 4); fs->close(); delete fs; // Need delete fs to avoid memory leak 

Однако я бы не использовал динамическую память для объекта fstream (т. Е. Нового оператора и точек). Вот новая версия:

  fstream fs(filename,ios::out|ios::binary); fs.write("ghgh", 4); fs.close(); 

EDIT, вопрос был отредактирован, чтобы запросить собственное решение (изначально было неясно), но я оставлю этот ответ, поскольку он может быть полезен кому-то

Если вы ищете опцию C ++ CLI (для управляемого кода), я рекомендую использовать StreamWriter вместо FileStream. StreamWriter позволит вам работать с управляемыми строками. Обратите внимание, что delete вызовет метод Dispose на интерфейсе IDisposable, и Garbage Collected в конечном итоге освободит память:

 StreamWriter ^fs = gcnew StreamWriter(gcnew String(filename)); fs->Write((gcnew String("ghgh"))); fs->Close(); delete fs; 

вы создаете текст. Спросите пользователя, хотите ли он отправить его. Если он скажет «да», это означает, что это конкретное сообщение должно быть помечено как сообщение исходящего сообщения, иначе оно должно быть сообщением «Входящие».