C ++ Очистить строку

Эй, ребята, я создал игру, в коде она есть 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 (конечно, с правильным форматом, который мне не нужен), он сохраняет последние данные.

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/

0

Другие решения

Это работает для меня.

string test;
test = "hello";

cout << test << endl;

test = "";
test = "abc";

cout << test << endl;
0

По вопросам рекламы [email protected]