为什么我的矢量变化值不是我的字符串?

时间:2014-04-22 10:46:18

标签: c++

我正在尝试更改结构向量中的时间值。结果应该输出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.我能做错什么?

2 个答案:

答案 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]不同。您有两个具有相同名称的变量。但是,请记住,这可能会发生 。违反一个定义规则可能会以各种意想不到的方式破坏您的程序。