C++ 传递指针-用于写入流
请原谅我的无知。。我知道一点,但不知怎么的,基本知识还是模糊不清!?!你能考虑一下这个简单的例子并告诉我把日志消息传递给'RealelgFix'?的最好方法吗?C++ 传递指针-用于写入流,c++,pointers,reference,stream,C++,Pointers,Reference,Stream,请原谅我的无知。。我知道一点,但不知怎么的,基本知识还是模糊不清!?!你能考虑一下这个简单的例子并告诉我把日志消息传递给'RealelgFix'?的最好方法吗? void writeLogFile (ofstream *logStream_ptr) { FILE* file; errno_t err; //will check this and put in an if statement later.. err = fopen_s(&file,
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;
}
void writeLogFile(ofstream*logStream\u ptr)
{
文件*文件;
错误没有错误;
//将对此进行检查,并在稍后输入if语句。。
err=fopen_s(&file,logFileName,“w+”);
//主要问题:如何将传递到此函数的数据写入文件??
fwrite(logStream_ptr、sizeof(char)、sizeof(logStream_ptr)、file);
fclose(文件);
}
int _tmain(int argc,_TCHAR*argv[]
{
logStream而不是stream的
您需要使用文件
类型
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+");
m_oLogOstream( "MyLogFile.txt" );
或者您只能使用流。
void writeLogFile ( const char* logBuffer )
{
m_oLogOstream << logBuffer << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
writeLogFile("Output");
return 0;
}
根据下面的评论您似乎想做的是:
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;
}
void writeLogFile(常量字符*输出)
{
fwrite(输出,1,strlen(输出),m_pFilePtr);
}
int _tmain(int argc,_TCHAR*argv[]
{
stringstream ss(stringstream::in);
ss您正在混合标准函数(fopen
/fwrite
/etc)还有,如果logStream\u ptr
是一个指向打开文件流的指针,为什么要打开另一个文件?向我们展示你的实际代码。同时尝试编辑你的问题,以便更清楚地了解问题所在。你希望你的writeLogFile
函数做什么?谢谢大家。我正在尝试创建一个lOG是从我的C++和它的C代码访问的。真正的WruteToLoG函数会有外部的“C”,并且不能使用C++流(我想?)所以我认为我最好的选择是跟随@丹尼斯并使用缓冲区……但是,这可能过于复杂。如果你有很多C++和C的标准,你会把什么传递给一个日志记录函数,以便它可以保存到文件?只需在C++包装器中使用一个字符串流来格式化<代码>字符串< /C> >然后得到<代码> char *<代码>通过使用c_str()方法。你可以把它传递给<代码>写文件> /Cuff>函数。我不知道这是什么,但是这不是正确的C++。没有理由使用<代码>文件>代码>一个流,这个代码做的和OP的代码应该完全不同。使用C风格代码和C++风格代码中的CuleLoGfile。我的代码也与原始代码完全相同(将文件写入字符串).我不知道你的反对意见是什么。至于提供一个带有文件指针的选项,这只是因为他试图使用fwrite、fopen等…我正在演示如何使用它。@Dennis Gaaah,你是对的。我没有看到你答案的第一个版本,也没有看到OP对此的评论。