`
dawning126
  • 浏览: 46119 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

std::string 和 c 的字符串 - [c & c++]

    博客分类:
  • C++
阅读更多
Tags:

std::string 的初始化碰到一个问题, 拿一个 char* 的指针当构造函数的指针, 运行时出现:

terminate called after throwing an instance of 'std::logic_error'
what():  basic_string::_S_construct NULL not valid

已放弃

原因在于没搞清, char *型的变量和指向 c 风格的字符串指针的区别.

char *cp = NULL;     cp是一个char*变量

char *str = "Hello";  str是一个指向 c 风格的字符串指针.

std::string 的构造函数需要的是一个 c 风格的字符串指针(要求以字符 null 结尾), 而不是一个char *的变量. 所以运行时出了上述错误.

另外, 很多 c 标准函数, 函数明确说明, 需要一个 c 风格的字符串. 虽然char * 和指向 c 风格的字符串指针的代码看起来都是 char *, 但是含义上有本质的区别.
分享到:
评论

相关推荐

    std::string format格式化函数源代码及两种格式化方法

    在C++编程中,`std::string`是一个非常重要的数据类型,用于处理字符串。而`format`函数通常指的是用于格式化输出的工具,类似于C语言中的`printf`或C++的`std::stringstream`。本项目提供的`std::string format`...

    详解C++ string常用截取字符串方法

    在C++编程中,`std::string`是一个非常重要的数据类型,用于表示和操作字符串。本文将详细解析两种常用的C++ `std::string`截取字符串的方法:`find`和`find_last_of`,以及如何结合使用它们来满足各种字符串处理...

    std::string、char*、const char*转托管byte数组或托管字符串String

    std::string是C++的标准字符串类,它可以使用c_str()函数将其转换为char*类型,然后使用Marshal::Copy函数将其拷贝到托管的byte数组中,最后使用System::Text::Encoding::UTF8->GetString函数将byte数组转换为托管的...

    C++ STL std::string详细讲解

    总结,理解和掌握`std::string`类的这些基本操作,意味着你已经具备了处理C++中大部分字符串问题的能力。在实际编程中,结合其他STL容器和算法,可以构建出复杂而高效的字符串处理逻辑。记得在使用`std::string`时,...

    C++ 16进制和字符串批量转换

    在C++中,我们可以使用`std::stringstream`和`std::hex`来实现字符串到16进制的转换,以及`std::stringstream`和`std::dec`来实现16进制到字符串的转换。 1. **字符串到16进制转换:** 在C++中,可以逐个字符处理...

    C++ 模板写的短小字符串类,用于替换字符数组和std::string

    //短小字符串类 template struct TinyString { TinyString(); template<size_t K> TinyString(const TinyString<K>& str); TinyString(size_t n, char c); TinyString(const char* s, size_t n=0...

    MFC,C++,C语言 json转换成std::map源码,无需编译,无需关心引用位置,直接引用即可使用

    使用"MyJson"库时,首先需要包含"MyJson.h"头文件,然后创建`MyJson`对象实例,接着调用相应的成员函数(可能是`parseJson`或类似的函数)传入JSON字符串,函数会返回一个`std::map`对象,键是JSON键,值是对应的...

    将Windows字符串资源加载到std :: string或std :: wstring中

    本文将详细介绍如何使用C++语言将Windows字符串资源加载到`std::string`或`std::wstring`中,以便在程序中使用。 首先,了解`std::string`和`std::wstring`。`std::string`是C++标准库中的一个类模板,用于处理...

    Unicode CString和 std::string 的完美转换,不会有64K限制

    另一方面,std::string是C++标准库中的一个类,它用于存储、操作和管理C风格的字节字符串,通常用于ASCII或多字节字符集,但也可以通过指定编码来处理Unicode字符串。 在进行Unicode CString和std::string之间的...

    C++17 使用 std::string_view避免字符串拷贝优化程序性能

    C++中std::string是日常Coding中经常使用的一个类,使用起来非常方便,但是也存在一些弊端。 如下代码,参数传递的过程发生了内存分配(Memory Allocation)和内存拷贝。 void fun(const std::string& s) { std::...

    c++结构体string无法用malloc分配内存

    `std::string`是C++标准库中的一个类,用于处理字符串。当我们尝试在结构体中使用`std::string`时,必须注意内存分配的方式,因为`std::string`具有动态内存管理特性。 标题中提到的问题是关于“c++结构体string...

    C++字符串函数_C++_

    除了`std::string`类,C++还提供了一些基本的C风格字符串函数,如`strlen`、`strcpy`、`strcat`、`strcmp`等,但使用它们时需要特别注意内存管理,避免缓冲区溢出等问题。 了解并熟练使用这些C++字符串函数,能让你...

    c++String类的重写

    在C++编程语言中,`std::string` 类是用于处理字符串的重要工具,它提供了丰富的功能,如拼接、查找、替换等。然而,为了满足特定需求或优化性能,我们有时需要对`std::string`类进行重写,即自定义它的行为。这通常...

    C++字符串常用操作函数讲解.rar

    与C语言中的字符数组不同,`std::string`提供了许多内置的方法,使得字符串操作更加安全和高效。 1. **构造字符串**: - `std::string()`:无参构造函数,创建一个空字符串。 - `std::string(const char *s)`:用...

    c++字符串倒序

    1. **字符串基础**:在C++中,字符串通常表示为字符数组或`std::string`类的对象。字符数组是一种包含多个字符的数组,而`std::string`是C++标准库提供的一个类,提供了许多方便的字符串操作方法。 2. **字符数组...

    比较两个string(不区分大小写)

    C++标准库中没有直接提供不区分大小写的字符串比较函数,但可以借助`std::tolower`或`std::toupper`函数将字符串转换后再比较。例如: ```cpp #include #include #include <string> std::string str1 = ...

    C++ 字符串使用详解

    首先,C++标准库提供了两种主要的字符串类型:`std::string` 和 C 风格字符串(字符数组)。`std::string` 类型是C++ STL(标准模板库)的一部分,它提供了丰富的成员函数和操作,使字符串处理更加便捷和安全。而C...

    C++字符串完全指引

    在C++中,有两种主要的字符串类型:C风格的字符数组(char[])和C++标准库中的std::string类。C风格字符串是以空字符'\0'结尾的字符数组,而std::string提供了一组方便的方法来操作和管理字符串。 1. C风格字符串 -...

Global site tag (gtag.js) - Google Analytics