C++ 将字符串存储在向量中会导致错误
我试图将从文件中读取的字符串存储在std::vector中,但我遇到了一个奇怪的错误 所以我有一个容器:C++ 将字符串存储在向量中会导致错误,c++,string,vector,C++,String,Vector,我试图将从文件中读取的字符串存储在std::vector中,但我遇到了一个奇怪的错误 所以我有一个容器: std::vector<std::string> m_Strings; 即使向量是空的,当我插入第一个字符串时,向量大小将调整为容纳8个字符串,索引0处的字符串包含随机字符,索引1处的字符串包含正确的单词,其他索引包含无效指针 你知道这是什么原因吗 编辑:在本例中,我正在读取字符串“DIRECTIONAL_LIGHT”,因此它适合刚刚更改的字符[100]字符[100]到std:
std::vector<std::string> m_Strings;
即使向量是空的,当我插入第一个字符串时,向量大小将调整为容纳8个字符串,索引0处的字符串包含随机字符,索引1处的字符串包含正确的单词,其他索引包含无效指针
你知道这是什么原因吗
编辑:在本例中,我正在读取字符串“DIRECTIONAL_LIGHT”,因此它适合刚刚更改的
字符[100]
字符[100]代码>到std::字符串字代码>和错误消失。刚刚更改了字符[100]代码>到std::字符串字
错误消失。发布后,您是否在word
中读取了超过99个字符?是否有理由读取字符而不是字符串?这很容易导致缓冲区溢出。。。这可能就是问题所在。根据斯塔克和诺顿教授的提示:让我们看看我们是否能一箭双雕:如果你改变char-word[100],事情会变得更好吗代码>到std::字符串字代码>?发布一篇文章您是否在word
中读取了超过99个字符?是否有理由读取字符而不是字符串?这很容易导致缓冲区溢出。。。这可能就是问题所在。根据斯塔克和诺顿教授的提示:让我们看看我们是否能一箭双雕:如果你改变char-word[100],事情会变得更好吗代码>到std::字符串字代码>?一般来说,当字符串长度不确定时,应使用std::string
或malloc
或new
,以便未知用户不会导致缓冲区溢出,恶意用户也不会。一般来说,当字符串长度不确定时,您应该使用std::string
或malloc
或new
,这样未知用户不会导致缓冲区溢出,恶意用户也不会。
ifstream inStream;
char word[100];
//[...]
inStream >> word;
m_Strings.push_back(word);