我有以下代碼,但我知道它是如何工作的以及它做了什麼,但是完全沒有。我不明白這三條線是如何工作的 std :: stringstream lineStream(line); std :: string cell; std :: getline(lineStream,cell,';') 特別是lineStream one; 我在谷歌找到他們,但沒有足夠的解釋。你能解釋我的行爲嗎?或者請分享一個好鏈接?由於提前,有一個愉快的一天:)類stringstream。不能理解lineStream是如何工作的,它的參數;
container *begin = new container;
begin->beginBox = new box;
container *last = NULL;
std::ifstream data(filename);
std::string line;
std::getline(data, line);
for (container *i = begin; !data.eof() && std::getline(data, line);)
{
std::stringstream lineStream(line);
std::string cell;
std::getline(lineStream, cell, ';');
i->ID = atoi(cell.c_str());
for (box *j = i->beginBox; std::getline(lineStream, cell, ';'); j->next = new box, j = j->next)
{
j->apples = atoi(cell.c_str());
i->lastBox = j;
}
i->lastBox->next = NULL;
i->nextCont = new container(), last = i, i = i->nextCont, i->beginBox = new box;
}
setAutoIncrement(begin->ID + 1);
last->nextCont = NULL;
return begin;
在外部循環條件中,您不需要'!data.eof()',std :: getline'調用將返回流對象,並且可以直接在布爾表達式中使用它。 –
好的,謝謝。 – Eugene
至於你的問題,請閱讀['std :: getline'](http://en.cppreference.com/w/cpp/string/basic_string/getline)和['std :: stringstream'](http:/ /en.cppreference.com/w/cpp/io/basic_stringstream)。 –