我正在尝试更改结构向量中的时间值。结果应该输出1430作为股票[1] .time的值,虽然我得到了不同的东西。
共享是我的向量的名称,我已经使用每个结构的值填充了向量。 Share是一个包含字符串时间的结构。
//This is in the Share.cpp
vector<Share>shares //vector of structs.
unsigned convTime = 1430;
std::stringstream out;
out << convTime; //make convTime a string stream
shares[1].time = out.str();
std::cout << shares[1].time;
struct Share
{
//member all the information in the structure
std::string date;
std::string time;
double price;
double volume;
double value;
std::string condition; //not nessesary in this assignment
};
但是我的股票[1]。时间保持原值,而不是1430.我能做错什么?
答案 0 :(得分:1)
在使用它们之前,您必须将对象实际放入向量中。当你写:
vector<Share> shares;
它还没有任何物品。去
shares[1].time
导致未定义的行为。如果您使用.at()
函数而不是[]
,那么您将获得异常而不是未定义的行为。
要将对象放入向量中,请使用push_back()
或shares.resize(num_objects)
。
答案 1 :(得分:0)
最有可能的是,您已经在Share.cpp中定义了vector<Share> shares
,正如您所说,,还有其他地方!
这违反了一个定义规则。结果可能会发生奇怪的事情。绝对可能发生的事情之一是,一个文件中的shares[1]
与另一个文件中的shares[1]
不同。您有两个具有相同名称的变量。但是,请记住,这可能会发生 。违反一个定义规则可能会以各种意想不到的方式破坏您的程序。