【问题标题】:split a word into letters in c++? [closed]在c ++中将单词拆分为字母? [关闭]
【发布时间】:2020-10-21 16:02:02
【问题描述】:

如何将字符串中的单词拆分为字母。 例如 "hello" 到 "h"、"l"、"l"、"o" 并将它们存储在一个数组中。

【问题讨论】:

  • 这里太多歧义了,什么是单词,什么是字母等。最好根据实际代码提出问题,而不是代码描述,因为代码描述总是很容易被误解。
  • @john “单词是什么,字母是什么”你是认真的吗?
  • 是的,例如问题中的字母有双引号,那么 OP 是否需要一个字母的字符串?他们想要什么样的字符串,C 还是 C++?
  • @john 是吗?这就是例子所说的字面意思吗?不确定你吹毛求疵的目的,但我绝对相信它的价值
  • 也许吧,但基于这种假设我不会回答这类问题,而且根本没有指定 C 或 C++ 字符串问题。

标签: c++ string


【解决方案1】:

只需将字符串用作数组即可。在c++std::string 中,如果example 等于"Hello world!",则example[0] 等于'H'example[1] 等于'e' 等等。

如果出于某种原因确实需要将字符串复制到字符数组中,可以使用 string.h 库中的 strcpy 函数。举个例子:

#include <iostream>
#include <string>

int main() {
    std::string example = "Hello world!";
    char arr[example.length()];
    strcpy(arr,example.c_str());
    for(int i = 0; i < example.length(); i++)
        std::cout << arr[i];
    return 0;
}

【讨论】:

  • 可变长度数组在 C++17 之前是非标准的,而且你不需要 arr,因为 std::string 重载了 operator[]
  • @StephenNewell 在 C++17 之前 VLA 是非标准的,这是什么意思?
  • 使用VLA,在C++中是不允许的,using namespace stdomg
  • 为什么需要阵列?您可以像访问数组一样访问std::stringstd::cout &lt;&lt; example[i] &lt;&lt; "\n";
  • @Slava - VLA 直到 C++17 才成为标准 C++ 的一部分。
【解决方案2】:

它已经是一个数组。 :)

字符串是(或公开为)字符数组,即使隐藏在像std::string 这样的控制类之后。

因此,如果您需要将它与数组下标语法一起使用(例如myString[i]),那么只需这样做。

【讨论】:

    【解决方案3】:

    我想这会对你有所帮助。

    #include<iostream>
    #include<string.h>
    using namespace std;
    int main()
    {
        string s="Hello";
        for(int i=0;i<s.length();i++)
        {
            printf("%c,",s[i]);
        }
    }
    

    【讨论】:

    • 请勿使用using namespace std; 发布答案。您没有使用#include&lt;string.h&gt;。但是,您使用的是#include &lt;string&gt;。我建议您添加“使用 std::string;`.
    猜你喜欢
    • 2022-08-22
    • 1970-01-01
    • 2011-05-13
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多