【发布时间】:2015-04-07 12:15:38
【问题描述】:
嘿,伙计们,我创建了一个游戏,在代码中它有while(true),并且每次输入一个新字符串,问题是如果我第一次写abc,然后在第二次循环abcd,然后abc它保存最后一个d,
我试过str.clear(),我试着把\0放进去,我试着把str = "";放进去,我什么都试过了,还是一样。
以下是部分代码:
std::string whoplayed;
int res = getPlayersNames();
if(res == -1)
return;
std::cout << "ok " << splayername << " please start: (Starting from south) S->N->S->N...." << std::endl;
std::string temp = "";
std::string playername = "";
while(true)
{
std::getline(std::cin,temp);
for(int i=0;i<(signed)temp.size();i++)
{
if(temp[i] != ':')
{
playername[i] = temp[i];
}
else break;
}
char c;
for(int i=0;i<(signed)temp.size() ; i++)
{
if(temp[i] == ':' && temp[i+1] == ' ')
{
c = temp[i+2];
break;
}
else
{
continue;
}
}
这是代码的一部分..我不能全部发布..当我在第三个循环中使用输入 abc、abcd、abc 打印 playername(确保格式正确,我不需要这样)它保存最后一个 d
【问题讨论】:
-
写临时定义。
-
请包含一个简短的、独立的、可编译的示例。您提供的代码并未向我们展示问题所在。
-
已更新,这是包含问题的部分代码
-
std::string 是一个智能的托管对象。你不应该像那样把手指伸进它的内脏。如果您尝试使用某种冒号分隔符解析字符串,请尝试 find、substr 等。
-
playername为空。对它的索引 (playername[i]) 不会扩展它,而是未定义。