如何将反转的字符串另存为新字符串?
How to save a reversed string as a new string?
我正在尝试制作一个回文检查器。因此,为了解决这个问题,我想我将原始字符串与反向字符串进行比较。但是,如何在不覆盖旧字符串的情况下保存反转的字符串?
reverse(myString.begin(), myString.end())
会反转我的字符串,但它取代了 myString,并且执行string reversedString = reverse(myString.begin(), myString.end());
不起作用。这是我到目前为止所拥有的:
int main()
{
cout << "Enter a string: ";
string myString;
getline(cin, myString);
cout << endl;
string reversedString = reverse(myString.begin(), myString.end());
cout << reversedString;
return 0;
}
使用反向迭代器创建新字符串:
string reversedString(myString.rbegin(), myString.rend());
此外,通过使用标准算法和反向迭代器,您可以这样做(自C++14(
const bool is_palindrome = std::equal(myString.begin(), myString.end(),
myString.rbegin(), myString.rend()));
如何在
不覆盖旧字符串的情况下保存反转的字符串?
std::string
同时具有复制构造函数和复制赋值运算符,使这两种方法成为可能:
std::string reversedString(myString); // copy constructor
// or
std::string reversedString;
reversedString = myString; // copy assignment
// finally
std::reverse(reversedString.begin(), reversedString.end());
正如其他人所指出的,可以使用迭代器构建std::string
。通过使用myString
反向迭代器rbegin()
和rend()
构造新字符串,您可以直接创建反向字符串,而无需调用std::reverse
:
std::string reversedString(myString.rbegin(), myString.rend());
对于手头的任务,要确定它是否是回文,您不需要上述任何一项。只需比较myString
从begin()
到字符串中间的rbegin()
字符:
bool is_palindrome =
std::equal(myString.begin(),
std::next(myString.begin(), str.size() / 2U),
myString.rbegin()
);
只需在反转字符串之前复制字符串:
string reversedString = myString;
reverse(reversedString.begin(), reversedString.end()); // reverse is now done on the copy
相关文章:
- 错误:在"生成字符串"之前应为";"
- 尝试将字符串/字符转换为整数会产生意外结果
- c++ 构造函数 将 1 个字符串参数转换为 3 个属性
- 字符串强制转换为常量字符*
- 将字符串(可以是十进制字符串或十六进制字符串)转换为整数C++
- 仅读取文件末尾的最后 3 个字符,并将其另存为 int
- C++将 lambda 函数另存为成员变量,而不使用函数指针进行优化
- 如何将反转的字符串另存为新字符串?
- 将 OpenCV 帧另存为对象
- Lambda 捕获'this'另存为 std::function
- 提升输入流错误.如何将标准:矢量的动态矢量另存为 XML 文件
- 将字符串另存为浮点数组C++
- 将字符数组另存为 JPG C++用于 Windows 应用商店应用
- 将端口另存为静态常量成员
- 将文件名的文件另存为当前时间日期
- 将 txt 文件另存为变量的名称
- 如何将对象名称另存为字符串
- QTableView 输出另存为 .csv 或 .txt
- 如何写入原始像素数据并另存为位图
- 将图像实例另存为 png Magick++