注册 登录
编程论坛 C++教室

关于接受输入字符串的问题。急!!

习惯被动 发布于 2012-03-06 21:36, 576 次点击
要求:1、能接受字符串的输入(含空格符),以回车结束输入;2、输入的字符可求长度;3、能提取输入的单个字符
。谢谢!
#include
#include

using namespace std;


void main ()
{
    cout<<"请输入密钥: ";
    string miyao;
    getline(cin,miyao);
    int len = sizeof(miyao);
    cout<<len<<endl;
<LEN<<ENDL;
}
疑问:为什么输出的长度总是16的,不管输入的字符有多长。
12 回复
#2
非死亡!2012-03-06 22:20
这个想简单点就很简单,想复杂点就很复杂.在下愚笨.只能指点如下了:
程序代码:
#include <iostream>
#include <string.h>
using namespace std;

char getschar(char inchar[]);
int main ()
{
char inchar[50];
char mychar;
int  count = 0;
cout<<"请输入密钥(yue):"<<endl;
cin.getline(inchar,50);
count = strlen(inchar);
mychar = getschar(inchar);
cout<<mychar;

return 0;
}
char getschar(char inchar[])
{
    int a;      //数组个数;
    char thechar;
    char ans = 'y';
    cout<<"要提取字符吗? y/n"<<endl;
    cin>>ans;
    if(ans == 'y')
    {
        cout<<"要提取第几个呢?"<<endl;
        cin>>a;
        thechar = inchar[a-1];
        return thechar;   
    }
    else
    cout<<"后会有期.拜拜";
}
#3
非死亡!2012-03-06 22:24
上面的忘了把count输出了  你在上面自己写上就行了  这是小弟的疏忽了  还望海涵啊
#4
pangding2012-03-06 23:36
用 miyao.size(),它返回的是 string 的长度。
#5
pangding2012-03-06 23:43
回复 3楼 非死亡!
钥 这个字是多音字。
密钥 这个词念 yue 或者 yao 的都有。现在普遍认为它的意思更接近 钥匙,所以认为念 yao 的多。
不过我也习惯念 yue,不过乍听 密钥 这个词的时候,好多人都联想到的是 蜜月……
#6
习惯被动2012-03-06 23:49
谢谢啊,如果能解释一下我那个程序的错误那就更好了
#7
pangding2012-03-07 00:09
string 的内存是动态申请的,你可以认为你用 sizeof 求的只是一个指针的长度。当然还有一些其它的内部元素。但总的说,它的长度是个常数。
#8
习惯被动2012-03-07 12:22
回复 7楼 pangding
那这个常数跟什么有关呢?是不是所有string类的长度用sizeof求都是一个长度?
#9
习惯被动2012-03-07 12:23
回复 3楼 非死亡!
好的,谢谢啦。
#10
习惯被动2012-03-07 13:03
回复 2楼 非死亡!
其实我做的是一个关于加密的小程序,到时候是要输入明文的,明文的长度可能会很长,用char好像不太好,能不能用string?怎么实现?
#11
TonyDeng2012-03-07 13:30
string其实是vector<char>,容器类,是不能用sizeof()求容量的。求string对象元素个数的方法是


size_t number = miyao.size();



[ 本帖最后由 TonyDeng 于 2012-3-7 14:01 编辑 ]
#12
习惯被动2012-03-07 13:58
回复 11楼 TonyDeng
谢谢版主!
#13
TonyDeng2012-03-07 14:07
我把11楼的string::size_type改成size_t,简短一些,其实两者是一样的。如果你用VS,用鼠标指向size(),应该可以看见返回的数据类型。但有一点需要注意:不要把size_t的值赋给int类型的变量,有可能会被截断,但如果数值很小,一般不会出问题,不过最好稳妥一点吧。
1