如何创建一个字符串数组来分割一个字符,其中单词用“”分隔? 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++的主要内容,如果未能解决你的问题,请参考以下文章