for (i = 0; temp[i] != ' '; ++i)
{
proizvod[i] = temp[i]; std::cout << proizvod[i];
}
std::cout << "Proizvod:" << proizvod;
第二行的Cout什么都不做,首先它起作用。
编辑:
std::fstream f;
std::string temp, proizvod, _cijena;
double cijena;
f.open(m_fileName);
while (std::getline(f, temp))
{
for (i = 0; temp[i] != ' '; ++i)
{
proizvod[i] = temp[i]; std::cout << proizvod[i];
}
std::cout << "Proizvod:" << proizvod;
答案 0 :(得分:1)
您创建一个空字符串:
std::string proizvod;
然后尝试写入不存在的元素:
proizvod[i] = temp[i];
给出未定义的行为。您可以增加字符串的大小:
proizvod.push_back(temp[i]);
或做其他事情而不是走过字符串:
proizvod = temp.substr(0, temp.find(' '));
答案 1 :(得分:1)
您的proizvod
是std::string
,但是由于您在循环中向其添加元素而没有为其预先分配内存,因此您最终搞砸了它(记得string
最初是空的)。你需要
proizvod.push_back(temp[i]);
或使用std::string
连接operator+=
之类的
proizvod += temp[i];
代替。
答案 2 :(得分:0)
为什么不做呢
for (i = 0; temp[i] != ' '; ++i)
{
proizvod[i] = temp[i];
std::cout << "Proizvod:" << proizvod[i];
}
temp
和proizvod
的声明为char proizvod[]
和char temp[]
?这应该更容易理解,proizvod
和temp
的大小将是您的最大尺寸。