gpt4 book ai didi

c++ - 如何在vc++中拆分字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:29 25 4
gpt4 key购买 nike

我有一个字符串“stack+overflow*newyork;”我必须拆分这个堆栈,溢出,纽约

有什么想法吗??

最佳答案

首先也是最重要的,如果可用的话,我总是会使用 boost::tokenizer 来完成这种任务(请参阅下面的好答案并点赞)

如果无法访问 boost,您有两种选择:

您可以使用 C++ std::strings 并使用 stringstream 和 getline 解析它们(最安全的方式)

std::string str = "stack+overflow*newyork;";
std::istringstream stream(str);
std::string tok1;
std::string tok2;
std::string tok3;

std::getline(stream, tok1, '+');
std::getline(stream, tok2, '*');
std::getline(stream, tok3, ';');

std::cout << tok1 << "," << tok2 << "," << tok3 << std::endl

或者您可以使用 strtok 系列函数之一(请参阅 Naveen 对 unicode 不可知版本的回答;有关线程安全的警告,请参阅下面的 xtofls 注释),如果您对 char 指针感到满意的话

char str[30]; 
strncpy(str, "stack+overflow*newyork;", 30);

// point to the delimeters
char* result1 = strtok(str, "+");
char* result2 = strtok(str, "*");
char* result3 = strtok(str, ";");

// replace these with commas
if (result1 != NULL)
{
*result1 = ',';
}
if (result2 != NULL)
{
*result2 = ',';
}

// output the result
printf(str);

关于c++ - 如何在vc++中拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1044088/

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