" C语言中有string类型变量吗"
这里的 string 有 二 义性。
(1) 如果 string 是普通词汇,“C语言中有字符类型变量吗”, 答,有。 字符类型 用 char 声明。
char str[]="This is a string";
(2) 如果 string 是专用词汇,“C语言中有string类型变量吗”,答,没有。string 是 类,是 class, 不是 类型,不是 type.
类 的 声明 用 构造函数初始化,或 new 声明。
类 -- C++, 不是 C
C语言里压根就没有string这个类型,所以字符串都是通过char数组来存储的, 而<string.h>这个头文件里声明的函数原型也全是针对char数组的种种操作。直到C++中才出现了string这个类(注意是类, 不是类型)。
C语言里有<string.h>这个头文件,所以不要想当然的认为C语言里有string这个 类型。通过下面这种形式来声明string的变量 string aString; 编程时通不过编译。
要想使用标准C++中string类,必须要包含
#include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件
using std::string;using std::wstring;
using namespace std;
下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。
string和wstring的用法是一样的,以下只用string作介绍:
string类的构造函数:string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化
此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常 ;
string类的字符操作:
const char &operator[](int n)const; const char &at(int n)const; char &operator[](int n); char &at(int n);
operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。
const char *data()const;//返回一个非null终止的c字符数组 const char *c_str()const;//返回一个以null终止的c字符串
int copy(char *s, int n, int pos = 0) const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目
C
语言
中
没有
string
类型。
string
类型是 C++、java、VB等编程
语言
中
的。 在java、C#
中
,
String
类是不可变的,对
String
类的任何改变,都是返回一个新的
String
类对象。
string
是C++标准程序库
中
的一个头文件,定义了C++标准
中
的字符串的基本模板类std::basic_
string
及相关的模板类实例。
而在C
语言
中
,C
语言
中
没有字符串类型,字符串是存放在字符型数组
中
的,将字符串作为字符数组来处理的。为了测定字符串的实际长度,C
语言
规定了一个“字符串结束标志”,以字符’
##C
语言
中
没有
string
类型##
#include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { char c[][5] = {"abc","haha","no"}; for (int i=0; i<3; i++) { printf("%s\n",c[i]); } return 0; }
一直以来对这个问题都不是很清楚:只是知道C
语言
里有<
string
.h这个头文件,所以就想当然的认为C语
C 是静态弱类型
语言
。意味着类型(包括 size 等信息,你使用 sizeof 就是编译时候得到的)在编译的时候就能确定下来。
它的原生简单类型有 char int float 这样的,原生复合类型有 struct,以及“伟大”的 指针类型 primitive_type * .
这些类型的设计是在编译时可以明确确定存储空间大小,比如 char 占一个字节。32bit 机器上的指针为 4 Byt
C
语言
中
有
string
类型变量吗"
这里的
string
有 二 义性。
(1) 如果
string
是普通词汇,“C
语言
中
有字符类型变量吗”, 答,有。 字符类型 用 char 声明。
char str[]="This is a
string
";
(2) 如果
string
是专用词汇,“C
语言
中
有
string
类型变量吗”,答,没有。
string
是 类,是 class, 不是
类型,不是 ty
转自http://apps.hi.baidu.com/share/detail/35615256
一直以来对这个问题都不是很清楚:只是知道C
语言
里有这个头文件,所以就想当然的认为C
语言
里有
string
这个 类型,可以通过下面这种形式来声明
string
的变量
string
a
String
; 后来编程时发现通不过编译,又查资料才知道原来C
语言
里压根就没有
string
这个类型,所以字符串都是通过cha
众所周知,c
语言
中
对于字符串数组的处理相对比较复杂,其
中
需要调用各种字符串函数,为此,C++设置了
string
类型,下面就详细介绍一下
string
类型的使用方式。
string
类型的初始化:
string
s1;//s1为空串
string
s2("abc");//用字面值abc初始化s2
string
s3(s2);//将s3初始化为s2的一个副本
string
s...
在C
语言
中
其实是不存在字符串类型的,C
语言
使用字符数组来模拟字符串,在C++标准库
中
添加了
string
类这个类型。在C++
中
使用
string
类操作字符串是非常的方便的。
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,
中
间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值。
于是我就突发奇想用strlen计算数组会发生什么,由于我是初学者想当然的认为结果就是不完全初始化的整型数组
中
初始化了的数组数乘以四(即3乘4),结果结果却是这样的
于是我就很疑惑,是我没有包含头文件
string
.h吗?
于是我又包含
string
.h运行了一
C
语言
里面没有字符串类型,那么我们是如何表示字符串的呢?我们通过使用字符数组,或者说是使用字符指针来去访问字符串类型的东西。
C
语言
中
的字符串----->C
语言
中
,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库
中
提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象)的思想,而且底层空间需要用户自己管理,稍不留
c
语言
中
,怎么样定义一个字符串变量C
语言
没有字符串类型,所以没办法进行定义字符串变量。 但是可以用字符数组来处理字符串。(这定义了一个字符数组,名为a) 例:char a[] = "hello"; 也可以用来定义一个指针变量(定义了一个指针变量,名为p)。 例:char *p = "hello"; 接触C
语言
C
语言
中
有
string
吗?C
语言
中
没有
string
类型。
string
类型是 C++、ja...
stoi( S.substr(0,3) ); //范围int型111( int stoi (const
string
& str, size_t* idx = 0,...