Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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++ 如何反转单个单词?_C++_String - Fatal编程技术网

C++ 如何反转单个单词?

C++ 如何反转单个单词?,c++,string,C++,String,我需要将诸如“我的名字是托莫斯”之类的字符串转换为“ym-eman-si-somoht”。要做到这一点,我需要知道什么?使用strtok拆分成单词 对于每个单词,反转字符串并附加到输出中,同时添加空格,使用strtok将其拆分为单词 对于每个单词,反转字符串并附加到输出中,以及一个空格,一种可能是使用一对std::reverse\u迭代器srbegin和rend使用std::copy 除此之外,您可能还想使用类似于std::istringstream的东西将字符串分解为单词进行处理。一种可能是使

我需要将诸如“我的名字是托莫斯”之类的字符串转换为“ym-eman-si-somoht”。要做到这一点,我需要知道什么?

使用strtok拆分成单词
对于每个单词,反转字符串并附加到输出中,同时添加空格,使用strtok将其拆分为单词
对于每个单词,反转字符串并附加到输出中,以及一个空格,一种可能是使用一对
std::reverse\u迭代器
s
rbegin
rend
使用
std::copy


除此之外,您可能还想使用类似于
std::istringstream
的东西将字符串分解为单词进行处理。

一种可能是使用
std::copy
和一对
std::reverse\u迭代器
,您可以使用
rbegin
rend
获得它


除此之外,您可能还想使用类似于std::istringstream的东西将字符串分解为单词进行处理。

我不会提供代码,因为这闻起来太像家庭作业了。但我会尽力给你一个正确的方向

你得先把这个句子切碎成几个字。您可以使用
操作符>>(std::istream&,std::string&)
将它从一个流(如果您碰巧在一个字符串中,字符串流也可以)读入一个字符串来实现这一点

然后必须反转各个字符串。您可以使用C++代码库中的<代码> STD::RealSeE.(<)/代码>。 然后,您所要做的就是将单词写入某个输出流,并在它们之间留出空格


或者,您可以按照Jerry的建议,反向输出单词字符串

我不会提供代码,因为这闻起来太像家庭作业了。但我会尽力给你一个正确的方向

你得先把这个句子切碎成几个字。您可以使用
操作符>>(std::istream&,std::string&)
将它从一个流(如果您碰巧在一个字符串中,字符串流也可以)读入一个字符串来实现这一点

然后必须反转各个字符串。您可以使用C++代码库中的<代码> STD::RealSeE.(<)/代码>。 然后,您所要做的就是将单词写入某个输出流,并在它们之间留出空格


或者,您可以按照Jerry的建议,反向输出单词字符串

如果你是从c风格的字符串的角度来看这个问题(就像我第一次做这个作业时做的那样),你可能会想尝试一些指针。这是我经历的基本操作顺序。如果您使用的是std::string,我很确定这不会起作用,但它可能会起作用。这真的是为了c风格的字符串和教人们使用指针

创建2个指针和一个临时交换字符

递增第二个指针,直到它引用空终止字符。迅速增加一个


将第一个指针引用的内容与第二个指针引用的内容交换,直到指针相遇或通过。

如果您是从c样式字符串的角度来看这个问题的(就像我第一次为家庭作业做这个问题时所做的那样),您可能想尝试一些指针。这是我经历的基本操作顺序。如果您使用的是std::string,我很确定这不会起作用,但它可能会起作用。这真的是为了c风格的字符串和教人们使用指针

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]+" ");
    }


}
创建2个指针和一个临时交换字符

递增第二个指针,直到它引用空终止字符。迅速增加一个

交换第一个指针引用的内容与第二个指针引用的内容,直到指针相遇或通过

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函数不支持reverse函数 另外,Sting缓冲区不支持拆分函数,这就是为什么我们使用字符串值

逻辑是 首先把整根绳子倒过来 然后我们会得到

“索莫特·希曼·伊姆”

然后我们将使用空格分割这个字符串,这样我们将得到单个字符串

接下来,我们只想从数组的末尾进行迭代,并将其打印或存储在新数组中 我们将得到如下输出:

“ym eman si somoht”

这里我们使用字符串缓冲区和字符串 因为String函数不支持reverse函数 另外,Sting缓冲区不支持拆分函数,这就是为什么我们使用字符串值

逻辑是 首先把整根绳子倒过来 然后我们会得到

“索莫特·希曼·伊姆”

然后我们将使用空格分割这个字符串,这样我们将得到单个字符串

接下来,我们只想从数组的末尾进行迭代,并将其打印或存储在新数组中 我们将得到如下输出:

“ym eman si somoht”


问题被标记为
[c++]
。有比strtok更好的解决方案。问题被标记为
[c++]
。有比strtok更好的解决方案。我想毫无疑问,我可以知道为什么投票被否决?我想毫无疑问,我可以知道为什么投票被否决?我如何使用递归来做到这一点?它应该返回单独的反转单词stringwords,我如何使用递归实现这一点?它应该返回单个反向单词字符串