不能只串字符
can't cout string only char by char
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(' '));
您的proizvod
是std::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];
}
temp
和proizvod
的声明为char proizvod[]
和char temp[]
?这应该更容易理解, proizvod
和 temp
的大小是您的最大大小。
相关文章:
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 不能将字符转换为整数吗?
- 为什么不能将字符指针定义为数组?
- 为什么我们不能将使用异或运算找到的整数转换为字符?
- 为什么我不能从结构将数据输入到字符数组中?
- 为什么我不能将字符与"*"进行比较?
- 不能(隐式地)从字符**转换为常量字符**吗?
- 为什么我不能替换这样的字符串上的字符?
- 为什么我不能使用与"常量字符*"相同的"const int*"创建一个 int 数组?
- 为什么我不能将 2 个常量字符* 连接到 std::string?
- 为什么我不能像正常一样初始化 typedef 结构字符串或字符?
- C++字符串为什么不能用作字符数组
- 为什么Windows不能读取超过0x1A(EOF)字符,而Unix可以?
- 为什么我不能更改结构的字符数组属性?
- 不能只串字符
- 为什么不能将 int(表示 ASCII 字符)转换为 std::字符串,而没有大括号环绕在 int 周围?
- 什么不能接受字符串向量并用 offest 和 assigmnet 运算符替换任何字符串的字符?
- C++字符* 不能用作指针
- 为什么无符号字符不能正确显示十六进制值