C++运行程序后给我 basic_string::_S_construct null 无效错误
C++ giving me basic_string::_S_construct null not valid error after I run my program
我是C++新手,我尝试编写一个简单的字符串反向程序。当我编译它时,一切都很好,但是当我运行它时,我收到以下错误:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
Aborted (core dumped)
我做错了什么?这是我的代码。
#include <iostream>
using namespace std;
string reverse_string(char* argv[], int i);
int main(int argc, char* argv[])
{
for (int i = 0; i < argc; i++)
{
cout << reverse_string(argv, i) << endl;
}
return 0;
}
string reverse_string(char* argv[], int i)
{
string arg = argv[i + 1];
string output;
int length = arg.length();
for (int index = 1; index <= length; index++)
{
output += arg[length-index];
}
return output;
}
这个: 在构造反转字符串时argv[i + 1]
应该是argv[i]
的,主循环应该是for (i=1; i<argc; ++i)
还有更简单的方法来反转字符串:
std::string reverse_string(char* argv[], int i)
{
std::string arg = argv[i];
return std::string(arg.rbegin(), arg.rend());
}
此错误消息
在抛出"std::logic_error"
无效
实例后终止调用 what(): basic_string::_S_construct 空
表示您正在尝试调用 std::string 的构造函数作为参数指针 NULL 传递。问题是*(argv + argc)
是空指针。
还要考虑到您必须包含标头<string>
至于反向函数,那么它可以写得比你简单得多。首先,它只能有一个类型为 const char *
的参数
例如
#include <iostream>
#include <string>
std::string reverse_string( const char* s );
int main(int argc, char* argv[])
{
for (int i = 1; i < argc; i++)
{
std::cout << argv[i] << " -> " << reverse_string( argv[i] ) << std::endl;
}
return 0;
}
std::string reverse_string( const char* s )
{
std::string arg( s );
return std::string( arg.rbegin(), arg.rend() );
}
<</div>
div class="answers">好的,谢谢大家的帮助!我只是不想反转参数 0,这是程序的名称。但我找到了另一种解决方法。如果有人感兴趣,这里是固定代码:
#include <iostream>
using namespace std;
string reverse_string(char* argv[], int i);
int main(int argc, char* argv[])
{
for (int i = 1; i < argc; i++)
{
cout << argv[i] << " -> " << reverse_string(argv, i) << endl;
}
return 0;
}
string reverse_string(char* argv[], int i)
{
string arg = argv[i];
string output;
int length = arg.length();
for (int index = 1; index <= length; index++)
{
output += arg[length-index];
}
return output;
}
相关文章:
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 如何在 c++ 中'NULL'字符串
- c++使用foreach使数组为null
- 当使用通配符和null指针调用函数时,对输出的说明
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 为什么返回 NULL 不会破坏函数?
- 构造函数中的 QQuickItem 父项 null
- 检查字符串是否"null" C++
- fopen 在 gdb 中返回 NULL
- what(): basic_string::_M_construct null not valid
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 为什么要从main()返回NULL?
- 为什么 nlohmann/json 序列化 "null" 而不是在 double 上"0"?
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- 是否有通用方法可以找到任何以 null 结尾的字符串的长度?
- 为什么TinyXML2的XMLDocument::FirstChild()函数在尝试解析这个有效的XML文件时返回NULL?
- 使用 curl_easy_cleanup(curl) 时收到未经处理的 NULL 异常
- ClassTemplateSpecializationDecl 的定义数据为 null