【发布时间】:2015-09-06 19:32:45
【问题描述】:
根据我的任务,我需要创建一个类的方法,该方法允许我在字符串的每五个符号之后在字符串(在我的情况下为 *char 数组)中插入符号“+”。
class String
{
private:
char* st;
public:
int length;
int get_length(); //method for finding length of the string
char* insert_plus();
};
char* String:: insert_plus()
{
int i = 0,
k = 0;
int length_origin = get_length();
while (get_length() < length_origin + k )
{
if (i % 5)
{
st.insert(i, '+');
k++;
}
}
return st;
}
我在一行中遇到了错误
st.insert(i, '+');
我明白 st 不是一个类,但我在 MSDN 上读到这是插入符号的正确方法。所以请帮助我如何正确地做到这一点。 请不要对我苛刻,我只是在学习。
【问题讨论】:
-
你在哪里读到这样的东西?你能发个链接吗?也许是关于
string而不是char *? -
比 char 数组复杂一点。可能最简单的方法是创建一个新数组,比第一个更大以容纳额外的“+”,并从源数组中复制五个以上的字符,放置一个加号,复制另外五个字符,等等......直到完毕。然后删除源数组并用新的替换它。
-
您是想自己实现一个字符串类作为学习练习,还是只想使用一些字符串? (在后一种情况下,只需使用
std::string)如果您想创建自己的字符串,请使用size_t来存储大小。 -
除了您要问的问题之外,我认为您应该审查您的整个逻辑:(1)您的 while 循环不会运行一次(
length_origin等于get_length(),而k为零,所以get_length不能length_origin+0)。 (2) 并且0 modulo 5为零,您的条件代码不会运行,因此由于您从不增加i,因此您有一个无限循环什么都不做。