如何扭转个别单词?

时间:2010-09-23 09:53:55

标签: c++ string

我需要将“my name is thomos”等字符串转换为“ym eman si somoht”。为了做到这一点,我需要知道什么?

5 个答案:

答案 0 :(得分:5)

一种可能性是将std::copystd::reverse_iterator对一起使用rbeginrend

除此之外,您可能希望使用类似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分成单词 对于每个单词,反转字符串并附加到输出,以及空格