我正在使用C++编写两个大型代码库,其中一个采用"C风格",另一个采用"C++风格"。
"C风格"的代码有一些返回const char*类型的函数,而"C++风格"的代码在很多地方都有类似于
const char* somecstylefunction();
...
std::string imacppstring = somecstylefunction();
它正在从C风格代码返回的const char*构建字符串,这种方式之前可以正常工作。
然而,当C风格代码更改并开始有时返回NULL指针时,就会导致段错误。
由于周围存在大量代码,因此我希望能够以最简洁的方式解决此问题。期望的行为是,在这种情况下,imacppstring将是空字符串。是否有一种好的、巧妙的解决方案呢?
更新
这些函数返回的const char*始终是指向静态字符串的指针。它们主要用于传递关于函数中任何意外行为的信息(可能用于日志记录)。决定让这些函数在“没有报告”时返回NULL是不错的,因为这样你可以将返回值用作条件语句,即
if (somecstylefunction()) do_something;
以前,这些函数返回的是静态字符串"";
这是否是一个好主意,我不会去碰这段代码,而且这也不由我决定。
我的目的是避免追踪每个字符串初始化来添加包装函数。
""
实际上占用了内存作为单个空字符。 - Charles Salviaif (*somecstylefunction())
- UncleBens