Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何反转std::字符串?_C++_String_Binary_Reverse - Fatal编程技术网

C++ 如何反转std::字符串?

C++ 如何反转std::字符串?,c++,string,binary,reverse,C++,String,Binary,Reverse,我想知道当我用二进制数读取字符串时,如何反转字符串temp istream& operator >>(istream& dat1d, binary& b1) { string temp; dat1d >> temp; } 试一试 编辑:根据要求详细说明 分别代表“反向开始”和“反向结束”的string::rbegin()和string::rend(),将反向迭代器返回到字符串中。这些

我想知道当我用二进制数读取字符串时,如何反转字符串
temp

istream& operator >>(istream& dat1d, binary& b1)    
{              
    string temp; 

    dat1d >> temp;    
}
试一试

编辑:根据要求详细说明

分别代表“反向开始”和“反向结束”的
string::rbegin()
string::rend()
,将反向迭代器返回到字符串中。这些对象支持标准迭代器接口(
operator*
取消对元素的引用,即字符串的字符,
operator++
前进到“下一个”元素),例如
rbegin()
指向字符串的最后一个字符,
rend()
指向第一个字符,推进迭代器会将其移动到前一个字符(这就是使其成为反向迭代器的原因)

最后,我们将这些迭代器传递到的构造函数是以下形式的字符串构造函数:

template <typename Iterator>
string(Iterator first, Iterator last);
模板
字符串(迭代器优先,迭代器最后);

它接受一对表示字符范围的任何类型的迭代器,并将字符串初始化为该字符范围。

我不确定包含二进制数的字符串是什么意思。但要反转字符串(或任何与STL兼容的容器),可以使用
std::reverse()
std::reverse()
操作到位,因此您可能需要先复制字符串:

#include <algorithm>
#include <iostream>
#include <string>

int main()
{
    std::string foo("foo");
    std::string copy(foo);
    std::cout << foo << '\n' << copy << '\n';

    std::reverse(copy.begin(), copy.end());
    std::cout << foo << '\n' << copy << '\n';
}
#包括
#包括
#包括
int main()
{
std::字符串foo(“foo”);
std::字符串副本(foo);

std::cout“读入二进制数”是什么意思?字符串将有类似“1100110”的内容?您正在从磁盘读取二进制文件?它应该是一个void函数,因为它不返回值
std::reverse
是一个
void
函数:。@maxlybert是,但是,
main()<代码> >不是<代码>空白>代码>,应该返回一个值。这是@ Wilhelm试图指出的。我可以添加“返回0”,但是C++发生了一个特殊的情况:<代码>主< /代码>:“如果控件到达
main
的末尾时未遇到return语句,则其效果是执行
return 0;
”(,特殊属性列表中的第4项)。在第二行,您的意思是键入“string reverse(…)”而不是“string reversed(…)”?换句话说,“reversed”一词应该是”反向“@Job\u mummer\u 2020它只是一个变量名,可以是任何名称
#include <algorithm>
#include <iostream>
#include <string>

int main()
{
    std::string foo("foo");
    std::string copy(foo);
    std::cout << foo << '\n' << copy << '\n';

    std::reverse(copy.begin(), copy.end());
    std::cout << foo << '\n' << copy << '\n';
}