Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果我知道每个索引中的字符(在c+;+;)如何创建字符串_C++_String - Fatal编程技术网

C++ 如果我知道每个索引中的字符(在c+;+;)如何创建字符串

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

我尝试打印我创建的字符串,但它不存在。如您所见,输出显示长度为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(){
字符串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如果你得到答案,请随意接受任何一个答案。