尽管strcmp
返回零,显示两种形式相同,但我一直注意到这种奇怪的字符串连接行为
包含文件options.h
如下
struct options = {
std::string ctifile;
...
};
主文件以两种方式编写
方法1
#include "options.h"
#include <string>
#include "cantera/IdealGasMix.h"
options opt = {
"mech/tot.cti"
};
IdealGasMix gas(opt.ctifile, ...);
在第二种方法中,
#include "options.h"
#include <string>
#include "cantera/IdealGasMix.h"
options opt = {
"tot.cti"
};
IdealGasMix gas(std::string("mech/") + opt.ctifile, ...);
由于某种原因,只有方法2无法找到指定的文件。有什么指针吗? (双关语)
答案 0 :(得分:1)
strcmp期待你可以通过
获得的cstringsstd::string x = "blah blah";
assert(strcmp(x.c_str(), x.c_str()) == 0);
但如果您正在使用std :: strings,那么为什么不使用std :: string :: compare
std::string x = "blah blah";
assert(x.compare(x) == 0);
http://www.cplusplus.com/reference/string/string/compare/
警告:如果您尝试比较unicode字符串,那么简单的strcmp可能并不总是有效