| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5182 人关注过本帖, 1 人收藏
标题:请问这个str1为什么输出不了?
取消只看楼主 加入收藏
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:10 
请问这个str1为什么输出不了?
下面这段程序我直接写"cout<<str1;",好像什么都没有输出;
而我直接这样写"cout<<str1[0]<<str1[1]<<……;",是可以输出的。
我也查了一下在C++中string类型的变量直接写名称是可以输出的,不知道为什么在这里就不行了
题目:有一字符串,包含n个字符。写一函数将此字符串中从第m个字符开始的全部字符复制成为另外一个字符串。
代码:
程序代码:
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
    string str;
    void Partial_replication(string);
    cout<<"请输入一个字符串:"<<endl;
    cin>>str; 
    Partial_replication(str);
    return 0;
}
void Partial_replication(string str)
{
    int StringLength(string str);
    string str1;
    int n,m,i=0; 
    char *p,*p1;
    n=StringLength(str);
    cout<<"请输入被复制的字符个数m,(m<"<<n<<"):" ;
    cin>>m;
    for(p=&str[m-1],p1=&str1[0];p<=&str[n-1];p++,p1++)
    *p1=*p;
    cout<<"被复制的部分字符串为:"<<str1<<endl;     
}
int StringLength(string str)
{
    char *p;
    int i=0;
    for(p=&str[0];*p!='\0';p++)
    i++;
    return i;
}

这是我的运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 输出 字符串 str cout string 
2020-03-12 23:01
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 2楼 rjsp
这个str一开始也是空的,为什么就可以在str里写东西,而不可以在str1里写?
2020-03-13 13:47
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 4楼 rjsp
谢谢,我还想问一下为什么我这样写:cout<<str1[0]<<str1[1]……;是可以输出来呢?
2020-03-13 13:58
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 8楼 rjsp
你所说的这个“str1的size”,指的是str1长度吗?如果是的话,这个string类型的变量的长度不是不需指定,只随其中输入的字符串长度而改变的吗?
如果不是我所认为的那样的话,那就先这样吧。
谢谢!
2020-03-13 17:56
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 6楼 叶纤
对,看的我一脸懵逼
2020-03-13 17:57
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 9楼 xianfajushi
我就是先复制在str1里,然后在输出的
2020-03-13 17:59
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 15楼 叶纤
好的,谢谢
2020-03-13 18:40
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
回复 37楼 xianfajushi
请问一下"while(*p1)*p1++ = 0;"这句是干什么的?
2020-03-14 11:39
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
在各位大佬的相助下,这个问题我解决了,只不过有一点小瑕疵(空格没有删除),我搜了一下那个删除空格的函数,结果看不懂,超出了我的范围,就先这样行了吧!
程序代码:
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
    int m;
    string str,str1;
    int StringLength(string);
    void Partial_replication(string,int,string);
    cout<<"请输入一个字符串:"<<endl;
    cin>>str;
    cout<<"请输入被复制的部分字符串的起始字符在原字符串中的位置m(m<"<<StringLength(str)<<")";
    cin>>m;
    Partial_replication(str,m,str1);
    return 0;
}
void Partial_replication(string str,int m,string str1)
{
    int StringLength(string str);
    char *p=&str[0];
    int i=0;
    for(m=m-1;m;p++,m--)
    *p=0;
    str1=str;
    cout<<str1<<endl;
} 
int StringLength(string str)
{
    char *p;
    int i=0;
    for(p=&str[0];*p!='\0';p++)
    i++;
    return i;
}
2020-03-14 11:46
ke_liu
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:38
专家分:20
注 册:2020-1-24
收藏
得分:0 
以下是引用xianfajushi在2020-3-14 11:45:22的发言:

把它注释掉运行看看就知道干嘛用的。

ok,我试试
2020-03-14 11:47
快速回复:请问这个str1为什么输出不了?
数据加载中...
 
   



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

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