请教:有关AnsiString.c_str()函数的问题。
rt.
1)AnsiString.c_str()与c++标准库中的string::c_str()是不是有区别?前者返回的是指向非const类型字符串的指针,后者返回的是指向const类型的指针?这样理解对吗?
2)const类型的变量是不能修改的,但是如下语句:
char *str = "hello"; //按照C++规则,str指向的应该是一常量字符串
str = "123"; //没问题,str指向另一块内存
str[0] = '1'; //这一段应该有问题的,但是编译和运行时都没有报错
难道CB里面char *str = "hello"; str并不是指向常量字符串?一定要显示定义const char *str = "hello"吗?
3) 函数如下:
char* test(String &str)
{
char *ch;
//对str的处理
ch = str.c_str();
return ch;
}
程序中调用:
String str = "hello";
char *time;
time = test(str);
怎么看怎么觉得这样传递指针有错,但运行结果并没有错误?ch = str.c_str();返回的应该是一指向“栈内存”的指针,为什么运行没问题呢?上面的程序应该怎么改比较合理?