请原谅我的无知..我知道一点,但不知怎的,我对基础知识仍然很模糊!?!你能考虑这个简单的例子,并告诉我将日志消息传递给“writeLogFile”的最佳方法吗?
void writeLogFile (ofstream *logStream_ptr)
{
FILE* file;
errno_t err;
//will check this and put in an if statement later..
err = fopen_s(&file, logFileName, "w+" );
//MAIN PROB:how can I write the data passed to this function into a file??
fwrite(logStream_ptr, sizeof(char), sizeof(logStream_ptr), file);
fclose(file);
}
int _tmain(int argc, _TCHAR* argv[])
{
logStream <<"someText";
writeLogFile(&logStream); //this is not correct, but I'm not sure how to fix it
return 0;
}
最佳答案
您需要使用 FILE
类型,而不是 ofstream
。
void writeLogFile ( FILE* file_ptr, const char* logBuffer )
{
fwrite(logBuffer,1, sizeof(LOG_BUF_MAX_SIZE), file);
}
int _tmain(int argc, _TCHAR* argv[])
{
writeLogFile(m_pLogFile, "Output");
return 0;
}
其他地方
m_pLogFile = fopen("MyLogFile.txt", "w+");
或者您可以仅使用 ofstreams。
void writeLogFile ( const char* logBuffer )
{
m_oLogOstream << logBuffer << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
writeLogFile("Output");
return 0;
}
其他地方
m_oLogOstream( "MyLogFile.txt" );
根据下面的评论您似乎想做的是:
void writeLogFile ( const char* output)
{
fwrite(output, 1, strlen(output), m_pFilePtr);
}
int _tmain(int argc, _TCHAR* argv[])
{
stringstream ss(stringstream::in);
ss << "Received " << argc << " command line args\n";
writeLogFile(m_pLogFile, ss.str().c_str() );
return 0;
}
请注意,您确实需要比我这里更多的错误检查,因为您正在处理 c 样式字符串和原始指针(指向字符和文件)。
关于c++ - 传递指针 - 用于写入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929104/