C++ 如果我知道每个索引中的字符(在c+;+;)如何创建字符串
我尝试打印我创建的字符串,但它不存在。如您所见,输出显示长度为0:C++ 如果我知道每个索引中的字符(在c+;+;)如何创建字符串,c++,string,C++,String,我尝试打印我创建的字符串,但它不存在。如您所见,输出显示长度为0: #include <iostream> #include <string> using namespace std; int main(){ string a=""; a[0]='a'; a[1]='b'; a[2]='c'; cout<<"length of a: "<< a.length(); } #包括 #包括 使用名称空间std; int main
#include <iostream>
#include <string>
using namespace std;
int main(){
string a="";
a[0]='a';
a[1]='b';
a[2]='c';
cout<<"length of a: "<< a.length();
}
#包括
#包括
使用名称空间std;
int main(){
字符串a=“”;
a[0]='a';
a[1]='b';
a[2]='c';
cout您可能应该构建一个char
数组,然后可以使用字符串构造函数。您可能应该构建一个char
数组,然后可以使用字符串构造函数。您的代码具有未定义的行为,因为您访问的元素超出了范围。字符串具有size()
(与length()
)相同0
因此a[0]
和其他访问不存在的元素
要使其工作,必须先resize()
字符串
例如:
string a;
a.resize(3);
a[0]='a';
a[1]='b';
a[2]='c';
您也可以直接创建具有适当长度的字符串:
string a(3, '\0'); // create a string of length 3 filled with \0 chars
您的代码具有未定义的行为,因为您访问的元素超出了范围。该字符串具有size()
(与length()
相同)0
,因此a[0]
和其他访问不存在的元素的字符串
要使其工作,必须先resize()
字符串
例如:
string a;
a.resize(3);
a[0]='a';
a[1]='b';
a[2]='c';
您也可以直接创建具有适当长度的字符串:
string a(3, '\0'); // create a string of length 3 filled with \0 chars
1) 此字符串a=“”;
此处的字符长度为0,因此其大小也为0
(二)
您正在访问的未定义行为超出范围
3) 因此,将a.resize(3);
添加到
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a="";
a.resize(3); // this will resize
a[0]='a';
a[1]='b';
a[2]='c';
cout<<"length of a: "<< a.length();
}
1) 此字符串a=“”;
此处的字符长度为0,因此其大小也为0
(二)
您正在访问的未定义行为超出范围
3) 因此,将a.resize(3);
添加到
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a="";
a.resize(3); // this will resize
a[0]='a';
a[1]='b';
a[2]='c';
cout<<"length of a: "<< a.length();
}
您正在尝试访问一个尚未存在的元素。
a
是空字符串,因此大小为0
,因此a[0]
是未定义的行为,因为大小至少应为1
要避免这种情况,请在分配给a
之前使用resize()
,如下所示
#include<iostream>
#include<string>
using namespace std;
int main(){
string a="";
a.resize(3);
a[0]='a';
a[1]='b';
a[2]='c';
cout<<"length of a: "<< a.length();
}
#include<iostream>
#include<string>
using namespace std;
int main(){
string a="";
a.push_back('a');
a.push_back('b');
a.push_back('c');
cout<<"length of a: "<< a.length();
}
为了避免重新分配,第一种解决方案优于第二种解决方案
另请参见此您正在尝试访问一个尚未存在的元素。
a
是空字符串,因此大小为0
,因此a[0]
是未定义的行为,因为大小至少应为1
要避免这种情况,请在分配给a
之前使用resize()
,如下所示
#include<iostream>
#include<string>
using namespace std;
int main(){
string a="";
a.resize(3);
a[0]='a';
a[1]='b';
a[2]='c';
cout<<"length of a: "<< a.length();
}
#include<iostream>
#include<string>
using namespace std;
int main(){
string a="";
a.push_back('a');
a.push_back('b');
a.push_back('c');
cout<<"length of a: "<< a.length();
}
为了避免重新分配,第一种解决方案优于第二种解决方案
还可以看到这个谢谢,先生,我知道了!谢谢,先生,我知道了!@Ajay Tyagi B18ME003如果你得到答案,请随意接受任何一个答案。@Ajay Tyagi B18ME003如果你得到答案,请随意接受任何一个答案。