c++ - 将字符从一个字符串简单分配到另一个字符串不起作用

标签 c++

我正在尝试使用函数将字符从一个字符串分配给另一个字符串,但出现错误。

"terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::at: __n (which is 0) >= this->size() (which is 0)"

#include <iostream>
#include <string>
#include <vector>

void split (std::string line)
{
    std::string::size_type leng=0;
    leng=line.length();
    std::string k;

    for (long unsigned int i=0;i<leng; i++)
    {
        k.at(i)=line.at(i);
    }

    std::cout<<k;
}

int main()
{
    std::string line = "";
    std::cout << "Enter a string: ";
    getline(std::cin, line);
    split(line);
}

最佳答案

当您初始化k 时,它是一个空字符串。所以 k.at(i) 将超出错误消息所说的范围。

有很多方法可以复制一个字符串,你可以使用像 std::string k(line);k.assign(line) 这样的构造函数或你可以使用 resize()在循环之前调整 k 的大小。

关于c++ - 将字符从一个字符串简单分配到另一个字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58511886/

相关文章:

C++,复制构造函数混淆

c++ - 如何在 C++ 中使用 cout 打印带 2 位小数的 float

使用 Inno Setup 安装时,Python/Qt/SQLite3 应用程序不运行

c++ - 检查一个类是否有一个有参数的函数

c++ - 返回指向 vector 中项目的指针(来自迭代器)

c++ - d指针中的 "d"代表什么?

c++ - 在 C++ 中刷新组合框?

c++ - 如何将 int 转换为 LPBYTE

c++ - 删除指针是否也会删除它指向的内存?

c++ - 为什么 QFileInfo::isExecutable() 对 ".msi"文件返回 false?