c++ - 我可以在字符串中包含 vector 吗?

标签 c++

这是我的代码:

//Declare variables for location of spaces
    int i = 0;
    char ignore;
    vector<int> spaces;
    int location;
    int x = 0;

    //Begin finding the spaces
    while (!inData.eof())
    {
        inData >> location;
        i = location - 1;
        i++;
        spaces.push_back(i);
        inData >> ignore;
    }
    for (int x = 0; x <= spaces.size(); x++)
    {

    output[spaces[x]] = ' ';

    }

这不是完整的代码,但它是问题的根源。
输出是一串加密的单词。我的 vector 保存空格在字符串中的位置,因此我在 vector 中使用这些数字用空格替换字母。

为了更好地解释,我有一个加密的单词,我已经将字母移回了它们应该在的位置。
output = "HelloWorldqBye"

空格位于 511 位置。该 vector 包含这些数字。

output[spaces[x]] = ' ' 应将这些字母替换为空格以生成 output = "Hello World Bye" 但它会使程序崩溃。

我不知道我的问题是什么,而不是因为 vector 在数组中?

我知道如何在不让我的程序崩溃的情况下做到这一点的唯一另一种方法是将空间位置存储在一个数组中,它可以工作,但是我必须声明我的数组的大小以及进行 for 循环<= 数组的确切大小,否则它会崩溃,并且输出字符串中的空格数量永远不会相同,除非有人每次输入 3 个单词。 “Hello World Bye” 只是一个示例,但实际情况是它永远不会是同一个字符串。

非常感谢任何帮助解决我的问题。

最佳答案

for (int x = 0; x <= spaces.size(); x++)
                   ^ problem is here

数组、字符串、 vector 等的索引总是从0开始编号。至 size-1 ,包括在内,但是您的 for 循环正在访问 size 处的 vector , 超出 vector 末尾的一个。这会导致未定义的行为:在本例中为崩溃。

将其更改为 <相反。

关于c++ - 我可以在字符串中包含 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26502460/

相关文章:

c++ - 在 BOOST_FOREACH 遍历容器时更改容器?

c++ - 在 C++ 中比较 buffer 和 const char*

C++:为什么访问类数据成员比访问全局变量慢?

c++ - E.CalView 在 Vala 中的使用

c++ - flex-lexer 是用于简单正则表达式识别和替换的高性能(快速)转换器吗?

c++ - 什么是 C++ 中的 static_case 运算符?

c++ - 简单的 C++ 代码链接器错误

c++ - 这在内部是如何工作的 int const iVal = 5; (int&)iVal = 10;

c++ - 优化构造函数调用次数

c++ - qmake:等同于源/cpp 文件的 INCLUDEPATH?