C ++清除字符串

时间:2015-04-07 12:15:38

标签: c++ string clear fflush

嘿伙计们我在代码中创建了一个游戏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>

2 个答案:

答案 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;