Эй, ребята, я создал игру, в коде она есть while(true)
и каждый раз, когда он получает в качестве ввода новую строку, проблема в том, что если я написал в первый раз abc
а затем во втором цикле abcd
, а потом abc
это сохраняет последний день,
Я старался 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 (конечно, с правильным форматом, который мне не нужен), он сохраняет последние данные.
Для очистки 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/
Это работает для меня.
string test;
test = "hello";
cout << test << endl;
test = "";
test = "abc";
cout << test << endl;