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