我有一个将信息输出到类中的文件。特别是我试图输出的一个字符串将进入向量。问题是我正在尝试采用格式化的字符串(在这种情况下是感兴趣的):
interest_string = "food, exercise, stuff"
所以基本上我想将上面的字符串转换为数组字符串,或者以某种方式将上面的字符串复制到由逗号分隔符分隔的每个字符串中的向量。
void Client::readClients() {
string line;
while (getline( this->clients, line ))
{
string interest_num_string, interest_string;
istringstream clients( line );
getline( clients, this->sex, ' ' );
getline( clients, this->name, ',' );
getline( clients, this->phone, ' ' );
getline( clients, interest_num_string, ' ' );
getline( clients, interest_string, '.' );
this->interests = atoi(interest_num_string.c_str());
cout << this->sex << "\n" << this->name << "\n" << this->phone << "\n" << interest_num_string << "\n" << interest_string;
}
this->clients.close();
}
答案 0 :(得分:2)
提示:getline
的替代签名是
istream& getline ( istream& is, string& str, char delim );
strtok
也是一个可行的选项,对于低级字符串操作不是太残酷。
答案 1 :(得分:0)
您可以使用矢量或其他合适的容器。您需要创建一个“人”类,其中包含您读入的所有数据并放入容器中。
void Client::readClients(std::vector<MyClass*>& myPeople)
{
// ... other parts of your code
// Create a person
pointerToPerson = new Person();
// read them in
getline(clients, pointerToPerson->field, ' ');
// After you load a person just add them to the vector
myPeople.push_back(pointerToPerson);
// more of your code ...
}
答案 2 :(得分:0)
简单的c ++代码:
string s = "abc,def,ghi";
stringstream ss(s);
string a,b,c;
ss >> a ; ss.ignore() ; ss >> b ; ss.ignore() ; ss >> c;
cout << a << " " << b << " " << c << endl;
输出:
abc def ghi