提示コードですがstd::cout<<str<<std::endl;
は4という数字が出力されますがdebug.Write()関数はaaaaaa %s
と表示されてしまいます。関数をまたいで実装するにはどうすればいいのでしょうか?
Main.cpp
int main() { /* Console::Init(); Console::NoDispInput(); Console::NoInputBuffer(); */ int i = 4; Console::Debug debug("debug.txt"); std::string str = Console::Help::GetFormat("aaaaa %d",i); std::cout<<str<<std::endl; //std::cout<<i<<std::endl; debug.Write("aaaaaa %s",str); return 0; }
Debug.Write
//書き込み void Console::Debug::Write(const char* format,...) { fp = fopen(file.c_str(), "a"); std::string str = Help::GetFormat(format); fprintf(fp,"%s",str.c_str()); //fclose(fp); }
GetFormat
std::string Console::Help::GetFormat(const char* format,...) { va_list ap; char str[10000] = {'\0'}; va_start(ap, format); vsprintf(str,format,ap); va_end(ap); return (std::string)str; }
c++ のご質問には c++ のタグとしてください。
回答1件
あなたの回答
tips
プレビュー