| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4529 人关注过本帖
标题:C++中字符串输出问题
只看楼主 加入收藏
关鱼
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-9-13
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
C++中字符串输出问题
程序代码:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int i = 0;
    char *name = new char[];
    cin>>name;
    char* first = new char[strlen( name ) + 1 ];
    strcpy( first,name );
    char p='\0';
    while(*first != p)
        cout<<first[i++];
    cout<<first<<endl;
   
   
   
    return 0;
}
我想的是在while那句的末尾编译器会自动添加字符'\0',因为给定的空间刚好够,strlen( name ) + 1,当输出碰到'\0'会自动停止,然而编译时后不自动停止
还有个想法就是在取长度时候加一,即为strlen( name ),会不会正确执行而不越位.
搜索更多相关主题的帖子: 字符串 color 
2011-12-14 20:52
共和国鹰派
Rank: 3Rank: 3
来 自:山东
等 级:论坛游侠
帖 子:37
专家分:119
注 册:2011-10-20
收藏
得分:5 
char *name = new char[];动态分配空间没有这么写的,你这样的是不正确的,并且如果我没猜错你的#include<string>是为了使用strcpy之类的函数,但是在C++中<string>头文件是一个不同于C语言中的头文件,string可以动态的分配内存,从而可以使用string存储字符串而不必担心或出现超出范围的错误
2011-12-15 00:11
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:5 
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int i = 0;
    char *name = new char[];
    cin>>name;
    char* first = new char[strlen( name ) + 1 ];
    strcpy( first,name );
    char p='\0';
    while(first[i] != p)    //这块你写成*first指向的永远是第一个字符,所以如果你输入了字符,它就永远不可能为'\0'
       cout<<first[i++];
    cout<<endl;
    cout<<first<<endl;
    return 0;
}
明白了吗
2011-12-15 00:16
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:5 
cout<<first[i++];
可以改成这样
cout << *first++;
当然楼上的改法也正确,只是会输出两行字符串,相信这不是你的目的,你是想通过指针来访问数组中元素的值,不知道我的猜想对不对?

祝愉快~

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-16 11:41
qingpan521
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2011-12-17
收藏
得分:5 
我也是菜鸟,没事交交我。
2011-12-19 14:13
快速回复:C++中字符串输出问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012250 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved