不能通过char只输出char字符串

时间:2015-05-07 14:01:08

标签: c++ string

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;

3 个答案:

答案 0 :(得分:1)

您创建一个空字符串:

std::string proizvod;

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

proizvod[i] = temp[i];

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

proizvod.push_back(temp[i]);

或做其他事情而不是走过字符串:

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

答案 1 :(得分:1)

您的proizvodstd::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];
}

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