标题:字符串输入输出问题
只看楼主
xyaofeng
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-8
结帖率:50%
已结贴  问题点数:10 回复次数:7 
字符串输入输出问题
程序代码:
#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str1 ; 

    str1[0] = 'a';
    cout << str1<<endl;
    return 0;
}
//什么都没有输出



#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str1;
    cin >> str1; 

    str1[0] = 'a';
    cout << str1 << endl;
    return 0;
}
//当输入cde,输出ade



#include<iostream>
#include<string>
using namespace std;

int main()
{
    string  str1 = { '\0' };
    str1[0] = 'a';
    str1[1] = 'b';
    cout << str1 << endl;
    return 0;
}

//输出a

上面三段小程序的中的第一个程序的a和第三个程序的b没有赋值成功,是什么原因?

PS:新人,没有多少积分



[ 本帖最后由 xyaofeng 于 2015-7-8 17:14 编辑 ]
搜索更多相关主题的帖子: 字符串 
2015-07-08 17:08
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:3 
这是字符串又不是数组

一片落叶掉进了回忆的流年。
2015-07-08 17:14
w2009w
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:190
专家分:542
注 册:2015-4-20
得分:3 
str1[0] = 'a';单引号括起来的是字符不是字符串,字符串是用双引号括起来的。
string  str1 = { '\0' };第一条语句你就定义字符串并赋值为空了,当然赋值不成功了,而且你也没有定义字符串数组,应该是这样吧!
2015-07-08 19:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
越界了,比如第一段代码,str1.size()==0,str[0]越界,属于错误
2015-07-08 19:58
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:3 
回复 2楼 诸葛欧阳
字符串视着数组处理应该是没错的,但指定下标访问当中具体的某个字符貌似只能针对定义好长度的字符串。在没定义长度的情况下按下标访问会出问题。先初始化就可以了。
2015-07-10 17:17
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:0 
回复 5楼 yangfrancis
string是c++中的一个类,并不等同于数组只是这个类中有一个重载的中括号方法可以按照数组访问的方式去访问

一片落叶掉进了回忆的流年。
2015-07-10 22:56
气宇轩昂
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-11-14
得分:0 
回复 4楼 rjsp
那要怎样改才可以输出a呢?
2015-11-14 20:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 7楼 气宇轩昂
int main()
{
    string str1;
    str1.push_back( 'x' );

    str1[0] = 'a';
    cout << str1<<endl;
    return 0;
}

int main()
{
    string str1;
    cin >> str1;

    if( !str1.empty() ) )
        str1[0] = 'a';
    cout << str1 << endl;
    return 0;
}

int main()
{
    string  str1 = "xx";
    str1[0] = 'a';
    str1[1] = 'b';
    cout << str1 << endl;
    return 0;
}
2015-11-16 08:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-455218-1-1.html




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

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