在c ++中将单词拆分为字母? [关闭]

Posted

技术标签:

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

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

【问题讨论】:

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

以上是关于在c ++中将单词拆分为字母? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery SQL 中将字符串列拆分为多行单个单词和单词对?

在c中将长动态字符串拆分为字符串数组

如何在 C / Objective-C 中将字符串文字拆分为多行?

如何在Python中将具有名称(1个或多个单词)和数字的单行输入字符串拆分为[“名称”,“数字”]?

如何在 bash shell 中将一个字符串拆分为多个字符串,至少用一个空格分隔?

如何在pyspark中将文件名拆分为两个字符串?