使用向量和字符*拆分实现
split implementation using vectors and char*
我正在尝试使用嵌套向量基于分隔符拆分字符*,但是字符*的最后一个单词似乎没有添加到向量中>
vector<vector<char>> split(char* word, const char de){
vector<vector<char>> words;
vector<char> c_word;
while(*word){
if(*word == de){
words.push_back(c_word);
c_word.clear();
word++;
continue;
}
c_word.push_back(*word);
word++;
}
return words;
}
用法示例:
int main() {
char *let = "Hello world!";
vector<vector<char>> words = split(let, ' ');
for(int x = 0;x < words.size();x++){
for(int y = 0;y < words[x].size();y++){
cout << words[x][y];
}
cout << endl;
}
}
这将只打印你好
这是一个完整的工作代码,带有多个分寸
vector<vector<char>> split(char* word, const char de) {
vector<vector<char>> words;
vector<char> c_word;
int index = 0;
int j = 0;
char *temp = word;
int numspaces = 0;
while (*word) {
if (*word == de) {
words.push_back(c_word);
c_word.clear();
word++;
j = index;
numspaces++;
}
index++;
c_word.push_back(*word);
word++;
}
j +=numspaces;
char *sub = &temp[j];
c_word.clear();
while (*sub)
{
c_word.push_back(*sub);
sub++;
}
words.push_back(c_word);
return words;
}
void main()
{
vector<vector<char>> result = split("Hello World! Ahmed Saleh", ' ');
}
对于其他想知道如何使用 char* 而不是字符串进行此实现的人。我的代码缺少的是单词的最终c_word添加,因为当它到达空终止符并且不添加最后一个单词时,while 已经结束,这是固定代码:
vector<vector<char>> split(char* word, const char de){
vector<vector<char>> words;
vector<char> c_word;
while(*word){
if(*word == de){
words.push_back(c_word);
c_word.clear();
word++;
continue;
}
c_word.push_back(*word);
word++;
}
words.push_back(c_word);
return words;
}
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- C++将向量的向量拆分为向量的N个子向量
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 在动作书中的并发中使用拆分参考计数实现锁定堆栈
- 使用向量和字符*拆分实现
- 如何使用 std::enable_if 时拆分声明和实现
- 如何实现可以通过换行符拆分的流
- 自动将 .h 拆分(重构)为标头和实现 (h+cpp)
- 查找最近的点对-如何在递归侧对函数调用中实现拆分对
- 字符串拆分的 C++ 实现