打印存储在vector中的结构的成员字符串的最佳方法是什么,我试图使用向量的const_iterator
获取字符串,但结果只是类构造函数的初始值(空字符串) )。提前致谢
#include <vector>
#include <string>
#include <iostream>
#include <cstdio>
class X
{
public:
std::string s1 , s2, s3 ;
X()
{
s1 = " " ;
s2 = " " ;
s3 = " " ;
}
};
void getstring(const char* msg , std::string storage)
{
std::cout << msg ;
std::getline(std::cin,storage) ;
}
int main()
{
std::vector<X>data ;
std::vector<X>::const_iterator it ;
int register_no ;
std::cout << "Enter Registers No. : " ;
std::cin>>register_no;
X temp ;
for (int i = 0 ; i < register_no ; i++)
{
getchar();
getstring("Enter s1 : " , temp.s1);
getstring("Enter s2 : " , temp.s2) ;
getstring("Enter s3 : " , temp.s3) ;
data.push_back(temp) ;
}
for (it=data.begin() ; it != data.end(); ++it)
{
//following code is not effective:
std::cout << (*it).s1 << std::endl ;
std::cout << (*it).s2 << std::endl ;
std::cout << (*it).s3 << std::endl ;
}
}
答案 0 :(得分:0)
为此传递字符串,读取值是存储在方法getstring的局部变量字符串中。
void getstring(const char * msg, std :: string&amp; 存储)
建议还应更改(*it).s1
的{{1}}。
答案 1 :(得分:0)
尝试此修改:
void getstring(const char* msg , std::string& storage)
{
std::cout << msg ;
std::getline(std::cin,storage) ;
}
注意:使字符串参数成为引用以便复制到成员。如果参数未声明为引用,则参数将“按值”传递,这意味着参数将复制到函数内部,并且当函数返回时参数将被删除。