c++中获取字符串首个字符的方法
展开全部
想获取首个字符,那么就要先找到它的地址!
C++用string类来定义字符串:
string s = "abcde";,如果这样定义,那么s[0]是'a',s[1]就是'b',string类就是这样的特性(这里,s是字符串的首地址)。
C语言这样定义字符串是最好的,char c[] = "abcde";(注意:这样没有指定数组大小的定义系统会在最后自动加上'\0'字符,字符串长度为5+1 = 6),c[0]就是首个字符a(这里c是字符串的首地址)。
有的人可能也会这样定义:char *p = "abcde";一旦涉及到改变该字符串时,就会出错。因为这样定义更是定义了一个指针而非字符串,它被放到字符表中,换句话说是只读的,显然这不是我们所预期的.
2楼:你没发现是因为你编的程序还少并且小,仔细看看我说的你就会明白了,这样的代码我觉得没什么价值,不值得提倡,除非是在定义字符串常量,但是也没必要这样定义。(我是原来的2楼)
看下面程序:编译能通过,但运行会由bug
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char *s1 = "abcdefg";
char s2[8] = "bcdefgh";
strcpy(s1,"ABCDE");//错误,不可被修改
cout << s1 << endl;
strcpy(s2,"ABCDE");//正确,可以被修改
cout << s2 << endl;
return 0;
}
C++用string类来定义字符串:
string s = "abcde";,如果这样定义,那么s[0]是'a',s[1]就是'b',string类就是这样的特性(这里,s是字符串的首地址)。
C语言这样定义字符串是最好的,char c[] = "abcde";(注意:这样没有指定数组大小的定义系统会在最后自动加上'\0'字符,字符串长度为5+1 = 6),c[0]就是首个字符a(这里c是字符串的首地址)。
有的人可能也会这样定义:char *p = "abcde";一旦涉及到改变该字符串时,就会出错。因为这样定义更是定义了一个指针而非字符串,它被放到字符表中,换句话说是只读的,显然这不是我们所预期的.
2楼:你没发现是因为你编的程序还少并且小,仔细看看我说的你就会明白了,这样的代码我觉得没什么价值,不值得提倡,除非是在定义字符串常量,但是也没必要这样定义。(我是原来的2楼)
看下面程序:编译能通过,但运行会由bug
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char *s1 = "abcdefg";
char s2[8] = "bcdefgh";
strcpy(s1,"ABCDE");//错误,不可被修改
cout << s1 << endl;
strcpy(s2,"ABCDE");//正确,可以被修改
cout << s2 << endl;
return 0;
}
展开全部
一楼没什么问题。补充下。二楼的我觉得有问题,我一直用char*str=“ slfdj”这种方法,并未发现什么不妥,我也看到好多大型程序也都有这么用的,个人觉得,这么用c++编译器会识别(也是很容易实现的),它会给字符串分配地址,再分配其他字符串的地址时也不会有什么冲突。
有些函数要求传递(char*)类型的参数,这时你直接可以传递字符串。你也函数的时候,如果要传递字符串,也可以把参数类型写出(CHAR*);
有些函数要求传递(char*)类型的参数,这时你直接可以传递字符串。你也函数的时候,如果要传递字符串,也可以把参数类型写出(CHAR*);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char * string1="my test string!"
char c1=string1[0];
c1就是string1的首个字符。
char c1=string1[0];
c1就是string1的首个字符。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
”的字符串,提取出IP地址字符串和整型端口号。
其中IP和端口号分隔符“|”可替换,默认为“:”,但不可为“.”。
代码如下(VC6+WinXP调试通过):
#include <iostream>
#include <string>
using namespace std;
void getIP( const string fullIP, string& IP, unsigned int& port, const char dot = ':' )
{
IP = fullIP.substr( 0, fullIP.find_first_of(dot) );
port = atoi( fullIP.substr( fullIP.find_first_of(dot)+1, fullIP.length() ).c_str() );
}
void main()
{
string ip;
unsigned int port = 0;
char abc[] = "127.0.0.1:1024";
getIP( (string)abc, ip, port );
cout << ip << " " << port << endl;
string efg = "192.168.0.1|80";
getIP( efg, ip, port, '|' );
cout << ip << " " << port << endl;
}
其中IP和端口号分隔符“|”可替换,默认为“:”,但不可为“.”。
代码如下(VC6+WinXP调试通过):
#include <iostream>
#include <string>
using namespace std;
void getIP( const string fullIP, string& IP, unsigned int& port, const char dot = ':' )
{
IP = fullIP.substr( 0, fullIP.find_first_of(dot) );
port = atoi( fullIP.substr( fullIP.find_first_of(dot)+1, fullIP.length() ).c_str() );
}
void main()
{
string ip;
unsigned int port = 0;
char abc[] = "127.0.0.1:1024";
getIP( (string)abc, ip, port );
cout << ip << " " << port << endl;
string efg = "192.168.0.1|80";
getIP( efg, ip, port, '|' );
cout << ip << " " << port << endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
作为字符串的结尾,所以可以使用如下写如下函数:
int getlen(char *source)
{
int i;
char *temp;
temp=source;
i=0;
//while(temp[i]!='\0'); 哥们不好意思,这里多加了个分号
while(temp[i]!='\0')
{
i++;
}
return i;
}
int getlen(char *source)
{
int i;
char *temp;
temp=source;
i=0;
//while(temp[i]!='\0'); 哥们不好意思,这里多加了个分号
while(temp[i]!='\0')
{
i++;
}
return i;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询