Kaw*_*hii 1 c++ string concatenation
对于这个简单的任务,我需要一个快速解决方案.
我正在修改源代码,它具有以下功能:
OFCondition MdfDatasetManager::saveFile(const char *file_name,
E_TransferSyntax opt_xfer,
E_EncodingType opt_enctype,
E_GrpLenEncoding opt_glenc,
E_PaddingEncoding opt_padenc,
OFCmdUnsignedInt opt_filepad,
OFCmdUnsignedInt opt_itempad,
OFBool opt_dataset)
Run Code Online (Sandbox Code Playgroud)
在函数内部,有一行:
result = dfile->saveFile(file_name, opt_xfer, opt_enctype, opt_glenc,
opt_padenc,
OFstatic_cast(Uint32, opt_filepad),
OFstatic_cast(Uint32, opt_itempad),
(opt_dataset) ? EWM_dataset : EWM_fileformat);
Run Code Online (Sandbox Code Playgroud)
看到file_name变量?
我想修改,所以file_name将在末尾添加".out".
所以,我添加了一个新变量:
char*output_file;
在调用dfile-> saveFile()函数之前,我添加了:
strcpy(output_file, file_name);
strcat(output_file, ".out");
result = dfile->saveFile(output_file, opt_xfer, opt_enctype, opt_glenc,
opt_padenc,
OFstatic_cast(Uint32, opt_filepad),
OFstatic_cast(Uint32, opt_itempad),
(opt_dataset) ? EWM_dataset : EWM_fileformat);
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.
应用程序崩溃.我认为,问题是我需要初始化*output_file吗?
问题是,我不是C++程序员:(
那么,有人可以帮忙吗?
谢谢.
没有分配内存output_file.用一个std::string代替:
std::string s(file_name);
s += ".out";
Run Code Online (Sandbox Code Playgroud)
然后s.c_str()用作saveFile()函数的第一个参数.