c++ - 如何反转字符串中的所有单词? C++

标签 c++ c string reverse words

所以..很抱歉我重复发布了。我真的不知道这个网站是如何运作的。不过,我在这里改变了我的整个问题,以便更容易理解。这是:

char s[1002];
cin.getline(s, 1002, '\n');
int k;
int p = strlen(s);
strcat(s, " ");

for (int i = 0; i <= p; i++)
{
    if (s[i] == ' ')
    {

        for (k = i - 1; (k != -1) && (s[k] != ' '); k--)
            cout << s[k];
        cout << " ";

    }
}

“”、“、”、“。”和 ';'应该是分隔符,但我已经设法将其拉到仅与“”(间隔)一起使用。

我无法使用std::string因为我正在做作业,我需要做一个非常具体的函数 - char const* reverseWordsOnly(const char*) .

代码应该做什么?

Input: Reversing the  letters, is; really hard.

Output: gnisreveR eht  srettel, si; yllaer drah.

最佳答案

虽然我仍然觉得这是重复的,但解决这个问题的思考过程是这样的:

  1. 编写一个函数,对于字母字符(a-z 和 A-Z)返回 true,否则返回 false。
  2. 从字符串的开头开始
  3. 找到下一个字母字符,记下其位置(开始)
  4. 查找下一个非字母字符,记下其位置(结尾)
  5. 反转[start, end)范围内的字符
  6. 重复步骤 3-5,直到字符串末尾

当您使用std::string时,所有这一切都变得非常容易和类似 std::reverse 的算法而不是使用原始数组和自定义数组。由于您可以使用 std::cinstd::cout ( <iostream> ),反对使用 <string> 的论点是个愚蠢的人。

关于c++ - 如何反转字符串中的所有单词? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318892/

相关文章:

c++ - 标准输入按键的 asio 服务处理程序

c - 在 C 中测试值 > 127 的 ascii 字符

string - 在接口(interface)上使用 Into<String> - Vec<Into<String>> 的成本为零?

c++ - 随机存取与 SSE 对齐的内存

c++ - 任意结构上的 set_union - 我哪里出错了?

c - 对结构成员的不优雅访问

android - getsockname 返回-1,errno 是 EBADF?

string - Swift:字符串包含字符串(不使用 NSString)?

C 字符串到 float 的转换

c++ - 我怎样才能写出干净利落的c++构造函数?