gpt4 book ai didi

c++ - 在 C++ 中拆分一个字符串(使用 strtok?),用逗号分隔符分隔并且不使用外部库?

转载 作者:行者123 更新时间:2023-11-27 22:42:50 25 4
gpt4 key购买 nike

我真的是编码新手,我在尝试使用 C++ 拆分字符串时遇到了一些麻烦。我想知道如何拆分输入为 const char names[] (i.e. "Mary, Jan, Jane") 的字符串在 C++ 中而不使用任何外部库(即我不想使用 #include <string> 等 - 尽管我可以使用 #include <cstring>)。

我试过使用:

const char names[] = "Mary, Jan, Jane";

char *token = strtok(names, ",");
while (token != NULL) {
token = strtok(NULL, " ");
}

但我似乎无法传入一个 const 字符数组,而且我还想知道您将如何访问所有单独的“ token ”?

此外,我尝试将输入更改为 char names[] (但我确实需要输入为 const),但出现段错误,我不明白为什么。

最佳答案

使用std::string而不是 char 数组并利用 std::stringstream类(class)。将 , 分隔符传递给 std::getline功能:

#include <iostream>
#include <string>
#include <sstream>

int main() {
std::string names = "Mary, Jan, Jane";
std::string temp;
std::istringstream ss(names);
while (std::getline(ss, temp, ',')) {
std::cout << temp << '\n';
}
}

唯一剩下的就是处理每个字符串中的前导空格字符:

if (temp.front() == ' ') {
temp.erase(0, 1);
}

关于c++ - 在 C++ 中拆分一个字符串(使用 strtok?),用逗号分隔符分隔并且不使用外部库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com