我需要将“my name is thomos”等字符串转换为“ym eman si somoht”。为了做到这一点,我需要知道什么?
答案 0 :(得分:5)
一种可能性是将std::copy
与std::reverse_iterator
对一起使用rbegin
和rend
。
除此之外,您可能希望使用类似std::istringstream
之类的内容将字符串分解为单词以进行处理。
答案 1 :(得分:1)
我不会提供代码,因为这有点像家庭作业。但我会试着给你一个正确的方向。
你首先必须把句子分成单词。您可以通过使用operator>>(std::istream&,std::string&)
从流中读取它(如果碰巧将字符串中的字符串流发送到字符串中)。
然后你必须反转单个字符串。您可以使用C ++标准库中的std::reverse()
来执行此操作
然后,您所要做的就是将单词写入某个输出流,并在其间放置空格。
或者你可以像Jerry所说的那样输出反转的单词串。
答案 2 :(得分:0)
如果你是从c风格的字符串角度来看这个(就像我第一次做家庭作业这个问题一样)你可能想尝试一些指针。这是我经历的基本操作顺序。如果您正在使用std :: string,我很确定这不起作用,但它可能会。这非常适用于c风格的字符串,并教人们使用指针。
创建2个指针和一个临时交换字符。
递增第二个指针,直到它引用空终止字符。及时将其减去一个。
将第一个指针引用的内容与第二个指针引用的内容交换,直到指针遇到或通过。
答案 3 :(得分:0)
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();
buffer.append("my name is thomos");
buffer.reverse();
String str=buffer.toString();
String arr[]=str.split(" ");
int length=arr.length;
for(int i=length-1;i>=0;i--)
{
System.out.print(arr[i]+" ");
}
}
这里我们使用String buffer和string 因为String函数不支持反向函数 Sting缓冲区也不支持split函数,这就是我们获取字符串值的原因。
逻辑是 首先反转整个字符串 然后我们会得到
“somoht si eman ym”
然后我们将使用空格分割此字符串,以便我们获得单独的字符串
接下来我们只想从数组的末尾进行迭代,然后打印它或将其存储在新数组中 我们将输出为
“ym eman si somoht”
答案 4 :(得分:-2)
使用strtok分成单词 对于每个单词,反转字符串并附加到输出,以及空格