【发布时间】:2012-05-01 00:12:06
【问题描述】:
我正在尝试将从文件中读取的字符串存储在 std::vector 中,但我遇到了一个奇怪的错误...
所以我有了容器:
std::vector<std::string> m_Strings;
然后我从流中读取字符串:
ifstream inStream;
char word[100];
//[...]
inStream >> word;
m_Strings.push_back(word);
即使向量是空的,当我插入第一个字符串时,向量会调整大小以容纳 8 个字符串,索引 0 的字符串包含随机字符,索引 1 的字符串包含正确的单词,而其他索引包含无效的指针.. .
知道是什么原因造成的吗?
编辑:在这种情况下,我正在阅读字符串“DIRECTIONAL_LIGHT”,因此它适合char word[100]
【问题讨论】:
-
发布SSCCE
-
您是否在
word中读取了超过99个字符? -
读取字符而不是字符串的任何理由?
-
这真的很容易受到缓冲区溢出的影响......这可能是问题所在。
-
从 stark 和 dgnorton 那里得到提示:让我们看看我们是否可以用一块石头杀死两只鸟:如果将
char word[100];更改为std::string word;会更好吗?