我对编程很陌生,所以请原谅我任何愚蠢的问题: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的下一个地址上?并再次感谢清理它!
我正在编写一个简单的程序,将数字(+ 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)字符或者这只是巧合?