每次使用C++程序时,我都记得所有可能被发明用来吃米饭的器具的模因,“两根棍子是如何赢得的”。 所以让我解释一下这个问题。我想要创建一个类字符串,这些字符串的行为完全是视觉基本的字符串。C++的字符串
class kstring
{
char *value;
public:
kstring(char *val)
{
value=val;
}
kstring operator+(kstring *val)
{
//some code here that works
}
kstring &operator=(kstring s2)
{
value=s2.value;
return *this;
}
};
所以这是所有... 创作者功能允许类似VB的decleration:
kstring s="Hello World";
其他的事情是有点怪; 让我们尝试用一个printf():
printf("%s\n",s); //I prefear printf as cout because more redeable
它的工作原理只有在私人“的char *值”得到声明为首位。当然s是一个指针,没有人知道在什么时候。所以编译器(代码块),幸运的是将它读为char数组。但是我不知道这是否会在每个编译器和环境中完成,如果在实践中是正确的,如果有更好的方法来定义它,比如vb指令“Default”。 二时会被分配=
kstring s,s2;
s="try ";
s2="again";
s=s+s2;
printf("%s\n",s);
在调试的功能里面,它结合正是“再试一次”,但printf的只显示地址,所以我的任务功能不起作用;有人建议做一个简单的课程来处理字符串?
你为什么不使用[std :: string](http://en.cppreference。com/w/cpp/string/basic_string)从标准库? –
对于赋值,您必须以'const char *'作为参数来实现[赋值运算符](https://en.wikipedia.org/wiki/Assignment_operator_(C%2B%2B))。但是'std :: string'是“标准字符串”,对大多数情况来说已经够用了。在printf中使用's.c_str()'。一旦你采纳了一个新的想法,它很容易使用它。 – Dialecticus
可能有帮助:[printf和自定义类](http://stackoverflow.com/q/12069623/2372759) – MagunRa