不能只串字符

can't cout string only char by char

本文关键字:字符 不能      更新时间:2023-10-16
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;

您创建一个空字符串:

std::string proizvod;

然后尝试写入不存在的元素:

proizvod[i] = temp[i];

给出不确定的行为。您可以增加字符串的大小:

proizvod.push_back(temp[i]);

或除了穿过字符串以外的其他事情:

proizvod = temp.substr(0, temp.find(' '));

您的proizvodstd::string,但是您最终会弄乱它,因为您在循环中添加元素而不为其添加预选内存(Remeber string最初是空的,)。您需要

proizvod.push_back(temp[i]);

或使用std::string串联operator+=喜欢

proizvod += temp[i];

而不是。

为什么不只是做

for (i = 0; temp[i] != ' '; ++i)
{
   proizvod[i] = temp[i]; 
   std::cout << "Proizvod:" << proizvod[i];
}

tempproizvod的声明为char proizvod[]char temp[]?这应该更容易理解, proizvodtemp的大小是您的最大大小。