c++中获取字符串首个字符的方法

 我来答
maxlovesyt
2011-02-28 · TA获得超过420个赞
知道答主
回答量:79
采纳率:0%
帮助的人:75.9万
展开全部
想获取首个字符,那么就要先找到它的地址!
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;
}
强从心开始
2011-02-25 · TA获得超过109个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:123万
展开全部
一楼没什么问题。补充下。二楼的我觉得有问题,我一直用char*str=“ slfdj”这种方法,并未发现什么不妥,我也看到好多大型程序也都有这么用的,个人觉得,这么用c++编译器会识别(也是很容易实现的),它会给字符串分配地址,再分配其他字符串的地址时也不会有什么冲突。
有些函数要求传递(char*)类型的参数,这时你直接可以传递字符串。你也函数的时候,如果要传递字符串,也可以把参数类型写出(CHAR*);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星语心愿2012
推荐于2016-09-17 · TA获得超过503个赞
知道答主
回答量:156
采纳率:0%
帮助的人:213万
展开全部
char * string1="my test string!"

char c1=string1[0];

c1就是string1的首个字符。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
热情的龟
2011-02-26 · TA获得超过265个赞
知道答主
回答量:396
采纳率:0%
帮助的人:187万
展开全部
”的字符串,提取出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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户52746
2011-03-05 · TA获得超过418个赞
知道答主
回答量:160
采纳率:0%
帮助的人:139万
展开全部
作为字符串的结尾,所以可以使用如下写如下函数:
int getlen(char *source)
{
int i;
char *temp;
temp=source;
i=0;
//while(temp[i]!='\0'); 哥们不好意思,这里多加了个分号
while(temp[i]!='\0')
{
i++;
}
return i;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式