将字符串作为参数传递

Posted

技术标签:

【中文标题】将字符串作为参数传递【英文标题】:Passing string as a parameter 【发布时间】:2017-09-28 05:25:23 【问题描述】:

想作为参考传递。这样我就可以修改函数内的字符串。

    void shift(string &s,int i)
    int len=strlen(s);
    for(;len>i;len--)
        s[len]=s[len-1];
    

【问题讨论】:

如果stringstd::string,则不需要使用strlenstd::string 类为此提供了一个方法。而且对于您真正想做的事情,您可以使用现有的方法... 什么是string?发布一个最小的完整示例! 我想从字符串的第 i 个位置移动字符。 好吧,那就去吧。有什么问题? 【参考方案1】:

这是您的代码 sn-p 修改后的代码,以实现您想要实现的目标,cmets 解释了这些更改:

void shift(std::string &s,int i) // use std::string (if you aren't already)
    int len=s.length(); // use length() when working with std::string
    s.resize(len+1); // before shifting the characters, you need to ensure there's enough space
    for(;len>i;len--) // use len (not s[len]) to compare the current position to i
        s[len]=s[len-1];
    

当然,您可以改用 Rene 提到的 std::string 的现有功能:s.insert(i, "_") 将执行您的 shift() 函数所做的操作,并将 _ 插入到字符移动后创建的空间中.

【讨论】:

当我使用 insert() 函数时。它说超出内存限制。 你向insert()传递什么样的输入?你在调用什么字符串s?您的“超出内存限制”问题可能与 insert() 或您的 shift() 函数无关。 #include #include using namespace std; int main() 字符串 str;字符 ch;辛>>str; int len=str.length(); for(int i=0;i 该代码一直在它找到的第一个z 后面插入" ",直到内存不足。调用insert()(或shift())后,您应该增加一次i,以跳过刚刚找到的z

以上是关于将字符串作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

将字符串作为参数传递

如何将二维数组类型 char(字符串)作为函数参数传递?

如何将字符串语句作为命令行参数传递

将多个方法参数作为循环或字符串传递

如何将带有查询字符串的 url 作为 api 参数传递?

将字符串作为参数传递时出错(Solidity)