小编buf*_*wel的帖子

字符串输入/输出

我对编程很陌生,所以请原谅我任何愚蠢的问题:P,我注意到当我写这篇文章时

int main()
    {
        string s;
        s[0]='a';
        cout<<s.size();
        cout<<s<<" ";
        cout<<s[0];
       return 0;
    }
Run Code Online (Sandbox Code Playgroud)

输出为0 a,首先为什么大小为0?为什么在我写的时候没有任何东西可以印刷,cout<<s;但它给了一个cout<<s[0].如果我使用push_back它会给出正常的输出.

int main()
{
    string s;
    s.push_back('a');
    cout<<s.size();
    cout<<s<<" ";
    cout<<s[0];
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出: - 1a a

我可能忽略了一些事情,但如果有人能指出原因,我会非常感激.谢谢.

编辑:这么快的回复!谢谢你的答案,我无法想出如何回复评论所以编辑了问题正文(第一次使用stackoverflow),(对此的任何帮助也将受到赞赏),还有一件事,所以当我使用cout<<s[0]它的时候给它a因为a存储在字符串s的下一个地址上?并再次感谢清理它!

c++

1
推荐指数
1
解决办法
102
查看次数

C中的gets()函数是否会在输入字符串的末尾自动添加NULL字符?

我正在编写一个简单的程序,将数字(+ ve,32位)从二进制转换为十进制.这是我的代码:

int main()
{
    int n=0,i=0;
    char binary[33];
    gets(binary);
    for (i = 0; i < 33, binary[i] != '\0'; i++)
        n=n*2+binary[i]-'0';
    printf("%d",n);
}
Run Code Online (Sandbox Code Playgroud)

如果我删除binary[i]!='\0',那么由于垃圾值它会给出错误的答案,但如果我不这样做,它会给出正确的答案.我的问题是:该gets函数是否在字符串的末尾自动添加'\ 0'(NULL)字符或者这只是巧合?

c arrays gets

0
推荐指数
1
解决办法
211
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

gets ×1