Redian新闻
>
C++ Strategies and Tactics 书上一个问题求助
avatar
C++ Strategies and Tactics 书上一个问题求助# Programming - 葵花宝典
n*s
1
这个是书上的一个章节总结的题目,不会做。
C++ Strategies and Tactics 第二章的一个问题
9。假设我们正使用String类, 它提供了一个operator const char*的转换函数:
class String
{
public:
operator const char*() const;
}
另有一个remove_blanks函数
void remove_blanks(char* cp)
{
char* p = cp;
while(*p)
{
if(*p!= ' ' )
*cp++ = *p;
++p;
}
*cp = '\0'
}
如果有人这样用
String s(" hello world ");
remove_blanks((char*)(const char*)s);
这样用有什么问题呢?
/**
* 我觉得如果 调用的时候写成
* remove_blanks
avatar
o*r
2
我看没问题
你干嘛不试试,告诉大家结果

【在 n*******s 的大作中提到】
: 这个是书上的一个章节总结的题目,不会做。
: C++ Strategies and Tactics 第二章的一个问题
: 9。假设我们正使用String类, 它提供了一个operator const char*的转换函数:
: class String
: {
: public:
: operator const char*() const;
: }
: 另有一个remove_blanks函数
: void remove_blanks(char* cp)

avatar
n*s
3
刚刚测试了,const char* 到char*的转换 编译无法通过。此类转换没有意义。
avatar
o*r
4
那是你没写对吧,(char*)((const char*)s)
试试下面这个:
const char chT1[] = "Hello!";
const char* pch1 = chT1;
cout << pch1 <char* pch2 = (char*)chT1;
pch2[5] = '?';
cout << pch2 <
【在 n*******s 的大作中提到】
: 刚刚测试了,const char* 到char*的转换 编译无法通过。此类转换没有意义。
avatar
n*s
5
恩 仔细看了一下,是我的测试代码写错了。
String s(" hello world ");
cout<const char* o = (const char*)s;
cout<char* o1 = (char*)o;
cout<remove_blanks(o1);
cout< char*)o1="<结果没啥问题。
我想对于这种Const char* --> char*的转换,如果后面对char*的操作是变短 就没
啥问题,如果变长 可能会覆盖其他变量吧。
谢谢observer RP++
:)
avatar
o*r
6
变长?
那是 bug
正常没那么干的

【在 n*******s 的大作中提到】
: 恩 仔细看了一下,是我的测试代码写错了。
: String s(" hello world ");
: cout<: const char* o = (const char*)s;
: cout<: char* o1 = (char*)o;
: cout<: remove_blanks(o1);
: cout< char*)o1="<: 结果没啥问题。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。