首页 > 解决方案 > 为什么更改字符串中的字符时没有输出?

问题描述

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    s[0] = 'b';
    s[1] = 'a';
    s[2] = '\0';
    cout << s;
    return 0;
}

我在代码中声明了一个字符串,然后使用数组索引分配字符值。当我打印字符串时,它没有给我任何输出。我的问题是为什么不呢?

它没有输出的原因是什么?

标签: c++c++14

解决方案


你试图做的事情有未定义的行为

string s;默认初始化(大小为零),然后您访问不存在的元素。

要解决它,您可以简单地使用string s = "ab";

std::string s;
s.push_back('b');
s.push_back('a');

或者正如@bindsniper001 所建议的那样(虽然你不能以这种方式添加到字符串的长度):

std::string s2(2, ' ');
s2[0] = 'c';
s2[1] = 'd';

住在神螺栓上


推荐阅读