0
我有一個字符串「我的名字是:貝蒂/ G」。我要提取貝蒂/ 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字符,這意味着最後一個字符串被損壞或發生了奇怪的事情。
我試圖捕獲上次串(貝蒂/ 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(貝蒂/ G)。此外,我試圖刪除空白空間,然後檢查長度,它仍然是8.字符串中的最後一個字符後沒有空格。
任何人都可以請建議可能是什麼問題?
如果你使用'std :: istringstream',它會簡單得多。 – timrau
之後是否有換行符,以便冒號在最後一行結束? – nneonneo
您可以在分割之前打印原始字符串,只是爲了確保? – Deduplicator