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

标签 c++ string

我尝试打印创建的字符串,但是它不存在。如您所见,输出显示length为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();
}

输出到控制台是:

length of a: 0

最佳答案

您的代码具有未定义的行为,因为您无法访问元素。该字符串具有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

关于c++ - 如果我知道每个索引处的字符,如何创建字符串(在C++中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60952630/

相关文章:

c++ - wsasend中使用的WSABUF结构体

algorithm - 数据如何存储在文本框中?

C++从ifstream中拆分字符串并将它们放在单独的数组中

c++ - 逗号作为变量初始化中的分隔符(不是作为运算符)

c++ - 是 T Min(T, T);总是比 const T& Min(const T&, const T&) 好;如果 sizeof(T) <= sizeof(void*)?

c++ - Eigen:如何防止大对象的额外拷贝;分配给结果而不实现 RHS 上的完整矩阵

c++ - 为什么我不能将 [](auto&&...){} 转换为 std::function<void()>?

r - 如何从R中的给定字符串中识别字符串中重复次数最多的字符

php - 突出显示一段带有匹配文本的 HTML 代码

c - 为什么字符串函数在不包含字符串库的情况下也能正常工作?