C++语言编程问题 下面的代码中string,string str[11], char m=a.length()和string a分别是什么意思

供稿:hz-xin.com     日期:2025-01-15
c++ string.length问题

楼主啊,你把基本的事实搞混了。
你代码中用的string和你在MSDN上查到的String完全不是一个东西。

你如果看仔细点应该发现你写的string头字母是小写的,你MSDN上查到的String第一个字母是大写的,C++区分大小写的,明白了吧,俩根本不是一个东西。

你在MSDN上查到的是.net Framework下面的String,是属于托管C++的那一套。说简单点,这不是标准C++,标准C++语法中根本没有“属性”的概念,也没有property关键字!这是微软为了让C++配合它的.net而扩展的语法。你在除了VC以外的其它C++编译器中编译是不通过的。

而你代码中使用的string则是标准C++库中带有的std::string,这个string有一个length()方法(在C++中把“方法”称为“成员函数”),因此你必须带括号使用,因为标准C++中不存在property这种东西!
你想要在MSDN上查标准的string的介绍,你可以在索引中输入basic_string,然后就可以找到std::string的原型,你可以看到它和你那个托管的String是有多么大的不同。

你真要学C++的话,你就不应该把.net那一套一起混进来,这个会对你对C++的学习造成很大的误导。你要学.net的话不如去学C#,说实话微软搞的托管版的C++那真有点四不像的感觉,谁都不兼容。

PS:另外C++中的struct也可以带方法(也就是成员函数)的,这是和C不同的一点。

都不是。string是个类,string str,是定义一个名叫str的字符串对象。

str内部保存着字符串的内容,通过str.c_str()可以获取这个字符串的首地址。
string str = "ABC",这也不是将str赋值为"ABC"的首地址,而是使用"ABC"为值来初始化一个string类。

建议先补一下C++面向对象的基础。

另外,首地址和字符串的第一个字符是两码事。你可以认为首地址是字符串的第一个字符的地址。

这段代码的意思是把输入的数字替换为汉语(拼音)输出:
for(int i=0;i<a.length();i++)

for是循环
在循环中,int类型的i作为计数变量,初始值为0;
i<a.length()是循环进行下去的条件;
i++是每次循环之后,i的值+1。

string 是关键词,表示字符串,string str[11] 声明str[11]数组为string型, char m=a.length()声明m为字符类型并且赋值为a的长度,string a声明a为string类型

下面C++程序中S值多少?解释一下for嵌套循环!!!
对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。 这个例子执行后...

C++语言编程问题 下面的代码中string,string str[11], char m=a.leng...
这段代码的意思是把输入的数字替换为汉语(拼音)输出:for(int i=0;i<a.length();i++)for是循环 在循环中,int类型的i作为计数变量,初始值为0;i<a.length()是循环进行下去的条件;i++是每次循环之后,i的值+1。

java 1到100能被3整除的数字有多少个? (注: 不是哪些,是多少?)_百度知...
在编程中,我们可以利用简单的循环和条件语句来解决这类问题。例如,要找出1到100之间能被3整除的数字数量,可以编写一段代码,如下所示:int s = 0;for (int i=1;i<=100;i++){ if(i%3==0)s++;} 这段代码首先初始化一个计数器s为0,然后遍历1到100之间的每一个数字。如果数字i能被3...

C语言编程: s=2+22+222+2222+22222+222222
222=22*10+2 ……所以可以通过一个for循环求出每个加数,并累加。参考代码:include <stdio.h>int main(){ int i,n=2,sum=0;for(i=1;i<=6;i++){sum += n;n = n*10+2; }printf("%d\\n",sum);return 0; }\/*246912*\/ ...

...{ while(*s) { if(*s==t)*s=t-′a′+′A′; s++; } }
是B。把所有小写的d转换成大写的D。那段程序中的那句少了单引号 ,应该是 if(*s==t)*s=t-'a' + 'A' ;这个函数的作用就是扫描字符串,把指定的字符转大写。因为调用的时候,第二个参数 c中存储的是 'd'因此就是把其中所有的'd'转大写了。

如何用C++编写程序接收二进制数输入?
C++中没有直接接受二进制输入的方法,可以参考下面的代码:include <stdio.h> include <string.h> char s[100];int i,k;int main(){ printf("输入二进制数:");scanf("%s",s);for(i=0,k=strlen(s);i<k;i++) if(s[i]<48||49<s[i])break; \/\/验证输入是否为二进制 if(i<k)...

c语言编程问题。 编程计算s=2+(2+4)+(2+4+6)+...+(2+4+6+...2N),N...
第五行啊!你定义变量时怎么能把两个放在一起呢!这样就对了 long s;int f1=2;分开就OK乐!

一个c语言编程问题:求s=1\/2-2\/3+3\/5-5\/8+...相加的项数n从键盘输入
include "stdio.h"void main(){ int i,n;float a=1.0,b=2.0,sign=1,sum=0.0,temp;printf("输入n:");scanf("%d",&n);for(i=1;i<=n;i++){ sum+=sign*(a\/b);temp=a;a=b;b=b+temp;sign=-sign;} printf("sum=%f",sum);} ...

在C语言中s[j++]和s[j],j++有什么区别?
C语言中的s[j++]和s[j],j++在表面上看似相同,实际上却存在细微差别。s[j++]先执行s[j]操作,随后立刻将j自加一,这实际上等同于连续执行两条语句s[j]和j++的效果。而s[j],j++则先执行j++,再执行s[j],尽管这种用法较少见,但理解它们之间的区别对于编写高效和准确的代码至关重要。在C...

编程实现求解下面的式子的结果s=1*2+2*3+3*4+…+20*21。
这是一个实现的方法,具体根据你实际使用的语言进行改编 int s,i;s=0;for (i=1;i<21;i++){ s=s+i*(i+1);}