由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ Strategies and Tactics 书上一个问题求助
相关主题
c++ 得最基本问题菜鸟请教smart pointer
A aimple C++ questionc++ string 一问
这个在c++ const不变,不能用相同地址的变量改,咋做的a string define question (c++)
C++一个string的小问题关于 exception 的一个问题
C++一问一个popen加gzip的问题
这段C++代码有啥问题为啥gcc找不到类的构造函数?
为什么foo1可以而foo2不行?请问以下代码有什么错误?
请教一个c++ map问题关于C++中一个Class的大小 (转载)
相关话题的讨论汇总
话题: char话题: const话题: blanks话题: string话题: remove
进入Programming版参与讨论
1 (共1页)
n*******s
发帖数: 482
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
o******r
发帖数: 259
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)

n*******s
发帖数: 482
3
刚刚测试了,const char* 到char*的转换 编译无法通过。此类转换没有意义。
o******r
发帖数: 259
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*的转换 编译无法通过。此类转换没有意义。
n*******s
发帖数: 482
5
恩 仔细看了一下,是我的测试代码写错了。
String s(" hello world ");
cout< const char* o = (const char*)s;
cout<<"const char* o="< char* o1 = (char*)o;
cout<<"char* o1="< remove_blanks(o1);
cout<<"remove_blanks(const char* -> char*)o1="< 结果没啥问题。
我想对于这种Const char* --> char*的转换,如果后面对char*的操作是变短 就没
啥问题,如果变长 可能会覆盖其他变量吧。
谢谢observer RP++
:)
o******r
发帖数: 259
6
变长?
那是 bug
正常没那么干的

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

1 (共1页)
进入Programming版参与讨论
相关主题
关于C++中一个Class的大小 (转载)C++一问
蔡鸟C++ 类型问题这段C++代码有啥问题
a simple C++ question为什么foo1可以而foo2不行?
c++ 中如何把str转换为float?请教一个c++ map问题
c++ 得最基本问题菜鸟请教smart pointer
A aimple C++ questionc++ string 一问
这个在c++ const不变,不能用相同地址的变量改,咋做的a string define question (c++)
C++一个string的小问题关于 exception 的一个问题
相关话题的讨论汇总
话题: char话题: const话题: blanks话题: string话题: remove