cout错误地打印出字符串的Vector
cout incorrectly prints out the Vector of strings
下面的代码片段打印单词的第一个字母,而不是整个单词。但是,当我调试它时,我会看到包含整个单词的数据数组。有人能解释为什么吗。
vector<string> data;
vector.resize(x);
for(int i=0; i<x; i++)
{
infile.getline(&data[i][0],32,'n');
cout<<data[i];
if(infile.fail()) break;
}
您超出了字符串的界限。data[i]
是一个空字符串,写入&data[i][0]
会导致未定义的行为。
代码可以替换为:
for (int i = 0; i < x; i++)
{
if ( !getline(infile, data[i]) )
break;
if ( data[i].size() > 32 )
data[i].resize(32);
cout << data[i];
}
请注意,这还修复了在输入失败后再次执行cout << data[i];
的错误。
相关文章:
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- 连接和压缩标准::vector<std::字符串的最佳方法>
- C++ 无法将 std::vector<BYTE> 转换为字符串或字符数组
- 如何在C++中处理多维字符串 VECTOR 的字符?
- 如何检查 std::vector<std::string> 的元素是否以某个子字符串开头?
- "error: subscripted value is not an array, pointer, or vector",我正在使用字符串
- 从 vector<pair<string, int 中提取不包含 0 的字符串>>
- 如何确定字符串是否包含在 std::vector 的任何字符串中
- 检查一系列单词,形成一个文本文件,保存在字符串vector C 中
- 仅威胁唯一字符串 - 什么是更快的 vector<std::string> 或只是 std::string
- 检查 std::vector 中的字符串是否包含C++中的子字符串
- 如何将十六进制字符串分为std :: vector
- STD :: vector和std ::字符串重新分配策略
- C++ vector 中不存在的字符串成员变量
- cout错误地打印出字符串的Vector
- 无法将C风格的字符串推送到std::vector中
- std::vector中的字符串验证
- 将 vector<unsigned char> {1,2,3} 转换为字符串"1-2-3" AS DIGITS
- 使用旧的c++编译器查找字符串Vector的索引