2015-04-07 3 views
0

Эй, ребята, я создал игру, в коде есть while(true) и каждый раз, когда он получает в качестве входных данных новой строки, проблема в том, что если я написал первый раз abc, а затем во втором цикле abcd, а затем abc он сохраняет последний d, Я пробовал str.clear(), я попытался положить \0 в него, я попытался до str = "";, я пробовал все, и его все равно то же самое.C++ Очистить струнные

Вот некоторые из кода:

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

Укажите временное определение. – kvorobiev

+2

Пожалуйста, включите короткий, самостоятельный, компилируемый пример. Предоставляемый вами код не показывает нам, в чем проблема. – zennehoy

+0

Обновлено, это часть кода, который содержит проблему – MaxDevelop

ответ

0

чтобы очистить станд :: строка использовать

std::string sStr; 
sStr.clear(); 

чтобы скопировать все символы из строки в строку температуры PlayerName вы можете использовать строку :: find_ first_of (...) http://www.cplusplus.com/reference/string/string/find_first_of/ в сочетании с std :: копия http://www.cplusplus.com/reference/algorithm/copy/

+0

Я уже сказал, что str.clear() не работает – MaxDevelop

+0

где вы назовете это? – kylecorver

+0

вещь, поставив вашу временную переменную во время цикла – kylecorver

0

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

string test; 
test = "hello"; 

cout << test << endl; 

test = ""; 
test = "abc"; 

cout << test << endl; 
Смежные вопросы