Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ can';不能一个字符一个字符地字符串 for(i=0;temp[i]!='';+i) { proizvod[i]=temp[i];std::cout_C++_String - Fatal编程技术网

C++ can';不能一个字符一个字符地字符串 for(i=0;temp[i]!='';+i) { proizvod[i]=temp[i];std::cout

C++ can';不能一个字符一个字符地字符串 for(i=0;temp[i]!='';+i) { proizvod[i]=temp[i];std::cout,c++,string,C++,String,创建一个空字符串: 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]; } s

创建一个空字符串:

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[i] = temp[i];
proizvod.push_back(temp[i]);

您的
proizvod
是一个
std::string
,但是由于您在循环中向其添加元素而没有为其预先分配内存(请记住,
字符串
最初是空的)。您需要

proizvod = temp.substr(0, temp.find(' '));
或者使用
std::string
串联
运算符+=
类似

proizvod.push_back(temp[i]);
相反。

为什么不这样做呢

proizvod += temp[i];
for(i=0;temp[i]!='';+i)
{
proizvod[i]=温度[i];

std::能否请您形成一个。您使用的输入是什么?它是否包含非ASCII字符?它是否包含空格字符?这是第一行
banana:9.92
。第一行打印字母
banana
,第二行什么都不做您甚至可以使用
std::cout@Javia1492
运算符无法声明像这样的“动态”数组,
charproizvod[]
错误:“proizvod”的存储大小未知
。您需要指定它的大小,或者从给定的字符串常量初始化它。这些解决方案都不是很吸引人,因为您事先不知道要从文件中读取多少字符。这就是为什么
std::string
是一个更好的选择。@vsoftco我没有给它一个特定的大小,因为我不知道OP需要什么的最大限制。我假设他可以自己弄清楚。目的不是创建一个动态数组,而是一个静态数组(你我都不知道它的大小,因为我们不知道OP想要存储什么的最大大小)。你应该在回答中澄清一下。我认为这种方法的唯一问题是你必须为数组指定一个最大大小,而且
std::getline
不能使用它,你需要使用
istream::getline
来代替。@vsoftco:编辑了我的文章,希望能澄清它。另外,我认为这是一种更好的方法作为可读性,因为当您查看
char
数组而不是像数组一样使用字符串时,它似乎是可以理解的。必须使用
istream::getline
并没有多大变化。