【问题标题】:Insert a symbol into array of *char type in C++在 C++ 中将符号插入 *char 类型的数组
【发布时间】: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,因此您有一个无限循环什么都不做。

标签: c++ arrays string


【解决方案1】:

st 声明为string 类出现:

string st;

现在可以使用string::insert()等字符串类成员函数了。
然后使用string::c_str() 为您的 return 语句获取 st 的 char* 值。

return st.c_str();

我很久没有“说”c++了,请查看在线文档以了解 c_str 最终参数。

注意:如果还没有包含,不要忘记包含字符串类头文件:

#include <string>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 2019-04-09
    • 2012-03-06
    • 1970-01-01
    • 2017-09-17
    • 2022-08-02
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多