将字符串作为参数传递
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];
【问题讨论】:
如果string
是std::string
,则不需要使用strlen
,std::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 z
后面插入" "
,直到内存不足。调用insert()
(或shift()
)后,您应该增加一次i
,以跳过刚刚找到的z
。以上是关于将字符串作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章