以常量引用作为输入的函数
Function with constant reference as input
我试图使一个函数,以字符串的常量引用作为输入,并返回字符串的每个字符旋转1位后的字符串。使用引用和指针仍然让我感到困惑,我不确定如何从常量引用中获得字符串。
string rotate(const string &str){
string *uno = &str;
string dos = rotate(uno.rbegin(), uno.rbegin() + 1, uno.rend());
return dos;}
这是我到目前为止得到的,但它不编译。关于如何正确地从常量引用中获取字符串的任何提示将不胜感激。
如果不违反关于参数的const
合同,则无法执行原地旋转,因此您应该复制输入并返回一个新字符串:
string rotate(const string &str){
string uno = str;
rotate(uno.rbegin(), uno.rbegin() + 1, uno.rend());
return uno;
}
另一个合理的选择是使用std::rotate_copy
string* uno = string &str;
没有意义。我想你的意思是
string* uno = const_cast<string*>(&str);
您可以考虑这样旋转:
// rotate last char to front
std::string rotate(const std::string& str)
{
return(str[str.size()-1] +
str.substr(0,str.size()-1));
}
// 'abcdefghijklmnopqrstuvwxyz'
// 'zabcdefghijklmnopqrstuvwxy'
您可以传入一个字符串来接收旋转后的字符串,从而避免通过值复制返回。
我通过指针传递字符串,因为在调用处更清楚地表明它打算被修改,但如果愿意的话,可以很容易地通过引用传递它。
#include <string>
#include <iostream>
#include <algorithm>
void rotate(std::string const& str, std::string* out)
{
*out = str;
std::rotate(out->rbegin(), out->rbegin() + 1, out->rend());
}
int main(int, char**)
{
std::string out;
std::string x = "1234567";
std::cout << x << 'n';
::rotate(x, &out);
std::cout << out << 'n';
}
相关文章:
- 通过 ssh 发送参数.是否有非阻塞输入函数?
- 将int输入函数,将int输入开关,然后更改int的值
- 不能将类中的输入函数与带参数的函数分开
- "cin.get"停止了另一个输入函数,如"cin"..C++
- 模板函数中的错误以获取来自C 输入函数的参数类型
- 两个输入函数的 T(n) 运行时
- 指针在输入函数时丢失值
- (C++)对文件输入函数的递归调用
- 在 Linux 上使用 C 中的输入函数,无需按回车键
- 我在输入函数上做错了什么
- 简单的c++输入函数
- 如何确定未格式化输入函数读取的字符数
- 当我超过第一个 getline() 的输入中的数组大小时,第二个 getline 或其他输入函数不起作用
- 将文件读取到向量中,我的输入函数有什么问题?
- Pthread_create似乎清空了传递给输入函数的参数
- 将具有可变参数的输入函数转换为成员函数
- 直接输入函数
- 如何:捕获输入函数异常的可变包装函数
- 返回命令输入函数
- 是否可以在if语句中使用_getch()或cin或任何输入函数?