
string::size_type为unsigned类型,
当ix = 0, 打印出最后一个字符后, 逻辑上ix应该是负数,
但因为它的类型为unsigned, 所以它实际上变成了一个unsingned类型
所能表示的最大正数, 自然出问题
===========================================
至于如何解决, 加条cout吧:
for(string::size_type ix = ssize() - 1; ix != 0 ; --ix)
{
cout << s[ix] << endl;
}
cout << s[0] << endl;
===========================================
恩,
如果stringsize()正好等于static_cast<string::size_type>-1
你的程序什么也不输出
还涉及到一些其他问题, 在这里我就不详细说了
加条cout吧, 又不麻烦
你这里是赋值作用。可以这么做。
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
string s1,s2;
cin>>s1;
s2assign(s1);// 或者s2=s1;
cout<<s2<<endl;
return 0;
}
严格讲是char的引用类型:
const_reference operator[](size_type _Off) const;
reference operator[](size_type _Off);
string是basic_string<char>,于是,
string::reference就是:char&
string::const_reference就是:const char&
public class Test1 {
public static void main(String[] args) {
for(int i = 0; i < argslength; i++) {
Systemoutprintln(args[i]);
}
}
}
你想输入输出几个参数都可以,都不会出现错误,java中数组有length的属性,可以确定数组有多少个元素,这样就不会出现下标越界的错误了 当然你如果就是要输入三个数的话,可以加入if语句进行一下判断
运行时:javac Test1java 3 5 6(参数)
以上就是关于C++中关于String的下标用法的一个问题!!!全部的内容,包括:C++中关于String的下标用法的一个问题!!!、String下标 *** 作符问题、string取下标返回的是什么类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)