【发布时间】:2014-02-05 14:20:39
【问题描述】:
我正在编写一个程序,它从 .ini 文件中读取一个值,然后将该值传递给一个接受 PCSTR(即 const char *)的函数。函数是getaddrinfo()。
所以,我想写PCSTR ReadFromIni()。为了返回一个常量字符串,我计划使用malloc() 分配内存并将内存转换为一个常量字符串。我将能够获得从 .ini 文件中读取的确切字符数。
这种技术好吗?我真的不知道还能做什么。
以下示例在 Visual Studio 2013 中运行良好,并根据需要打印出“hello”。
const char * m()
{
char * c = (char *)malloc(6 * sizeof(char));
c = "hello";
return (const char *)c;
}
int main(int argc, char * argv[])
{
const char * d = m();
std::cout << d; // use PCSTR
}
【问题讨论】:
-
一次用两种不同的编程语言编写一个程序是个坏主意。选择一种语言。如果您的编译器是 Visual Studio,那么您绝对应该选择纯 C++,因为 VS 与标准 C 的一致性非常差。
-
为什么是 C++ 标签?看起来像普通的 c。
-
仅供参考,“sizeof(char)”根据定义 1.
-
@TNA std::cout 是 C++。
标签: c++ c malloc const-char const-pointer