我正在构建一个函数从数组中提取姓氏并将名称打印到屏幕。我已经能够提取数组中的第一个姓,但随后输出将第一个索引的第一个名称与以下索引位置姓氏连接起来。以下是我的代码,感谢您的帮助!
{
stringstream ss;
string name;
for(int i=0; i < elements; i++)
{
ss << first[i];
ss >> name;
int pos = name.find(",");
cout << pos;
string last = name.substr(0,pos);
cout << "\"" << last << "\"" << endl;
}
cout << endl;
}
答案 0 :(得分:0)
请尝试以下代码:
int main()
{
string name = "asd,kkaa";
int pos = name.find(",");
if(string::npos != pos)
{
string part1 = name.substr(0,pos);
string part2 = name.substr(pos+1);
cout << "\"" << part1 << "\"" << endl;
cout << "\"" << part2 << "\"" << endl;
}
return 0;
}
// output:
// "asd"
// "kkaa"
我认为没关系,那么可以给我们更多的投入价值吗?
答案 1 :(得分:0)
这是因为你使用字符串流的方式。
每次从数组中读取新名称时,都会将其添加到输出缓冲区。然后,您从缓冲区中读取下一个单词,因此,您永远不会跳过第一个名称。对于你正在做的事情,你可以一起消除字符串流,只需坚持标准的输入和输出(cin / cout)。否则,每次读入新字符串时都清除缓冲区(ss.clear());
for(int i = 0; i < elements.size(); i++){
int pos = elements[i].find(",");
cout << "\"" << elements[i].substr(0,pos) << "\"" << endl;
}