如何创建一个字符串数组来分割一个字符,其中单词用“”分隔? C++

Posted

技术标签:

【中文标题】如何创建一个字符串数组来分割一个字符,其中单词用“”分隔? C++【英文标题】:How to create an array of string spliting a char that have words separated by a " "? c++ 【发布时间】:2014-03-27 16:28:23 【问题描述】:

我发现唯一能帮助我的问题是C++: splitting a string into an array。 我是 C++ 的新手,我需要一个字符串数组来包含我在这个字符中的每个单词。

代码如下:

s3eFile* file = s3eFileOpen("chatTest/restrict_words.txt","rb"); 
        int len = s3eFileGetSize(file);

        char* temp = new char[len];
        if (file!=NULL)
        
            s3eFileRead(temp,len,1, file);
            s3eFileClose(file);
        

所以我需要让这个临时文件变成一个数组,这样我就可以使用它了吗? 有办法吗?

【问题讨论】:

既然用的是new,为什么不用vector代替plain数组呢? 向量?我想没关系,我只需要知道怎么做 使用std::string::find 或其亲属之一。另见std::string::substr 注意:char *temp 等同于char temp[],当您使用它时。如果您只想获取索引 3,则为 char c = temp[3];。使用 C 构造时只需注意空终止符。 【参考方案1】:

可能是这样的:

ifstream f("chatTest/restrict_words.txt");

vector<string> vec;

while (!f.fail())

  string word;
  f >> word; 
  vec.push_back(move(word));

【讨论】:

move()。这真的足够重要到可以在这个级别上介绍吗?我希望 .push_back() 已经是自动的...【参考方案2】:

如果这是一个 c++ 代码,那么我建议使用 std::string 而不是 char* 并使用强大的 std 工具,如 fstream、stringstream 等。您指定的链接给出了如何做的详细答案

    #include <string>
    #include <sstream>
    using namespace std;
    .
    .
    .
    s3eFile* file = s3eFileOpen("chatTest/restrict_words.txt","rb"); 
    int len = s3eFileGetSize(file);

    char* temp = new char[len];
    if (file!=NULL)
    
        s3eFileRead(temp,len,1, file);

        //Adding Code here
        string str(temp);
        stringstream sstr(str)
        vector<string> str_array;
        string extracted;
        while(sstr.good())
         sstr>>extracted;
         str_array.push_back(extracted);
        
        //at this point all the strings are in the array str_array

        s3eFileClose(file);
    

您可以使用迭代器或通过简单的索引(如数组str_array[i])访问字符串

【讨论】:

使用后如何清理 char* temp? 我可以用 s3eFile* 文件做同样的事情吗? 好吧,我不知道 s3eFileOpen 和 s3eFileClose 函数。必须查看其文档/实现才能确定是否释放/删除内存。 @Ravi 如果打开分配,我希望关闭删除。但是你绝对不会知道 3rdparty 的分支。

以上是关于如何创建一个字符串数组来分割一个字符,其中单词用“”分隔? C++的主要内容,如果未能解决你的问题,请参考以下文章

如何在按钮之间平均分割字符串的字符?

C++如何将一个字符数组分割成几个数组?

输入一行字符(可能包含英文字母,数字字符等其他字符),要求统计其中单词的个数?

计算字符串最后一个单词的长度

如何在每个字符串之间用逗号分割数组?

c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开