gpt4 book ai didi

c++ - 用空格拆分字符串会导致字符串损坏

转载 作者:行者123 更新时间:2023-11-28 06:57:57 24 4
gpt4 key购买 nike

我有一个字符串“我的名字是:Betty/G”。我必须从我编写了以下代码的字符串中提取 Betty/G:

std::string str; //"My name is: Betty/G"
char sep = ' ';
std::vector<std::string> token;
for(size_t p=0, q=0; p!=str.npos; p=q)
{
std::string final = str.substr(p+(p!=0), (q=str.find(sep, p+1))-p-(p!=0));
token.push_back(final);
}

for(std::vector<std::string>::const_iterator z = token.begin();z!=token.end();++z)
std::cout<<":"<<*z<<":"<<std::endl;

当我单独打印字符串时,我得到以下输出:

:My: 

:name:

:is::

:Betty/G

G 字符后没有“:”,这意味着最后一个字符串已损坏或发生了一些奇怪的事情。

我正在尝试按如下方式捕获最后一个字符串 (Betty/G):

int count = token.size();
int len,n;
n=count;
char slsName[30];
len = token[--n].size();
strcpy(slsName,token[--count].c_str());
slsName[len]='\0';
printf("length is %d\n",len);

但是它打印的字符串的长度是 8 而它应该是 7(Betty/G)。我也尝试删除空格,然后检查长度,它仍然是 8。字符串中最后一个字符后没有空格。

任何人都可以提出可能是什么问题吗?

最佳答案

代码在 MSVC 2013 上运行良好。你最好使用 Boost Tokenizer。

关于c++ - 用空格拆分字符串会导致字符串损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917258/

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