You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++运行报std::logic_error: basic_string::_S_construct null not valid错误如何解决

报错信息翻译

terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
翻译为:程序运行终止,抛出了std::logic_error类型异常,异常描述为:basic_string构造函数不允许传入空指针。

错误产生原因
  • 直接触发报错的代码是string S = 0;:std::string没有接收整数类型的构造函数,此处的整数0会被隐式转换为空指针nullptr,匹配到std::string的const char*类型构造函数。C++标准要求传入该构造函数的指针必须指向合法的C风格字符串,传入空指针属于未定义行为,STL的实现直接抛出了你看到的逻辑错误异常。
  • 代码还存在两处隐藏逻辑问题:
    1. 变量T仅声明未初始化,后续for循环判断条件读取T的值时会拿到栈上的垃圾值,循环次数完全不可控。
    2. 原代码将cin >> S >> R写在T次循环外部,若要实现多组测试用例重复读取字符串和重复次数,应该把输入逻辑放到循环内部。
修复方案

修改3处问题即可正常运行:

  1. 字符串S不需要提前赋初始值,改为直接声明string S;
  2. 增加读取测试用例数量T的逻辑
  3. 将S和R的读取逻辑放到T次循环内部,每次循环读取一组输入

修复后的完整代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string S; 
    int T,R;
    
    cin >> T;
    for(int i = 0; i < T; i++)
    {
        cin >> S >> R;
        for(int k = 0; k < S.length(); k++)
        {
            for(int j = 0; j < R; j++)
            {
                cout << S[k];
            }
        }
        cout << endl;
    }
    
    return 0;
}

内容的提问来源于stack exchange,提问作者lucia_x.j.x_alcul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:27:01