我想知道,則對getline()函數指針方面是如何工作的。 在下面的代碼,對於病情的同時,如何爲函數getline()不是從SS的每一個循環後,一開始起步,但它遇到了最後一個分隔符之後。我認爲每次getline()都會改變ss,但是我意識到這不是真的,因爲在每個循環後面打印ss.str()總是會給出原始的字符串流。所以我認爲它必須不得不對指針做些事情。getline()如何在指針方面工作?
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
vector<int> parseInts(string str) {
stringstream ss(str);
vector<int> result;
string ele;
while(getline(ss, ele, ','))
{
result.push_back(atoi(ele.c_str()));
}
return result;
}
int main() {
string str;
cin >> str;
vector<int> integers = parseInts(str);
for(int i = 0; i < integers.size(); i++) {
cout << integers[i] << "\n";
}
return 0;
}
流有一個「當前位置」這是更新。流的內容不會改變。 – molbdnilo
擴展@molbdnilo的註釋,注意's'tellg()'和'ss.tellp()'的輸出,當你添加和讀取'ss'時。 – user4581301