嘿伙计们我在代码中创建了一个游戏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 < / p>
答案 0 :(得分:0)
清除std :: string使用
std::string sStr;
sStr.clear();
要将字符串temp中的所有字符复制到字符串playername,您可以将string :: find_first_of(...)http://www.cplusplus.com/reference/string/string/find_first_of/与std :: copy http://www.cplusplus.com/reference/algorithm/copy/结合使用
答案 1 :(得分:0)
这适合我。
string test;
test = "hello";
cout << test << endl;
test = "";
test = "abc";
cout << test << endl;