我有一个项目,我想问一些事情。我怎样才能用下面的函数来制作一个降序的字符串?cin<<word;
? 我从一个网站上找到的,试了一下,但是不能用cin。下面是代码。
void descOrder(string s)
{
sort(s.begin(), s.end(), greater<char>());
}
int main()
{
string s = "geeksforgeeks";
descOrder(s); // function call
return 0;
}
为了更清楚,我想这样做
geek for geeks
ssrokkggfeeee
另外,如何用字母表替换字符串中的字母,比如Hello我想这样H是I,e是f,l是m,o是p,如果一个单词中含有字母z,我想用字母a替换。
最后一个问题,我想从一个字符串中先打印出根据,再打印出元音。
你正在传递你的 std::string
按价值 desOrder()
从中获取一份副本,然后进行分类,你什么也得不到。
把你的 std::string
参考,才能改得了,而不是照搬。
#include <string>
#include <iostream>
#include <algorithm>
void descOrder(std::string & s)
{
std::sort(s.begin(), s.end(), std::greater<char>());
}
int main()
{
std::string s = "geeksforgeeks";
descOrder(s); // function call
std::cout << s;
return 0;
}
Plz,每个帖子发一个问题,看看这个。为什么 "使用命名空间std; "被认为是不好的做法?
有两种方法适用。
1. 通过引用传值。
当你通过引用传递一个变量时,确实会对原变量的值进行操作。
#include <iostream>
#include <algorithm>
void descOrder(std::string & s) // just use an '&' sign here
{
sort(s.begin(), s.end(), std::greater<char>());
}
int main()
{
std::string s = "geeksforgeeks";
descOrder(s); // function call
std::cout << s << std::endl;
return 0;
}
2. 返回值而不是通过引用传递。
如果你不想改变原来的值,而想存储在其他变量中或直接打印出来,你可以这样做:
#include <iostream>
#include <algorithm>
std::string descOrder(std::string s)
{
sort(s.begin(), s.end(), std::greater<char>());
return s;
}
int main()
{
std::string s = "geeksforgeeks";
std::string changedS = descOrder(s); // function call AND assigning to another variable
std::cout << changedS << std::endl;
// alternatively (uncomment)...
// std::cout << descOrder(s) << std::endl; // if you just want to print
return 0;
}