Записать данные в файл .txt, созданный CFileDialog, на C ++ - PullRequest
1 голос
/ 06 мая 2010

Я хочу записать данные в файл .txt, созданный CFileDialog, на C ++.

Проблема, с которой я сталкиваюсь, заключается в том, что приведенные ниже коды не работают, хотя ошибки сборки нет. Файл .txt, созданный CFileDialog, не может быть найден по некоторым причинам. Что не так в коде?

Каков эффективный способ записи данных в файл .txt, созданный CFileDialog, в C ++?

Спасибо

CFileDialog dlg(FALSE, NULL, NULL, OFN_OVERWRITEPROMPT,
    _T("My Data File (*.txt)|*.txt||"));
if(dlg.DoModal() != IDOK)
     return;
CString filename = dlg.GetPathName();
ofstream outfile (filename);
int mydata = 10;
outfile << "my data:" << mydata << endl;
outfile.close();

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Не зная о некоторых настройках, я могу только сделать квалифицированное предположение.

Например, в зависимости от того, как вы скомпилируете, UNICODE или! UNICODE, CString ведет себя по-разному, то есть сопоставляется с CStringA или CStringW.CString также ведет себя по-разному в зависимости от версии MFC, в некоторых случаях есть оператор для неявного преобразования в строку ac, а в некоторых нет.

Обычно ofstream ожидает, что в качестве аргумента используется const char *, поэтому вы можете захотетьчтобы изменить его на

ofstream outfile(filename.GetBuffer(255)); 

в этом случае.

РЕДАКТИРОВАТЬ:

Вы проверяли, можете ли вы открыть файл?из приведенного выше кода кажется, вы предполагаете успех ...

if ( outfile.is_open() )
...
1 голос
/ 06 мая 2010

Почему вы пытаетесь использовать ofstream при использовании MFC? Вы могли бы использовать CFile не так ли? Любая конкретная причина, почему вы используете ofstream?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...