我无法在这段小代码中找到错误.这有什么问题?
string f,s;
f[0] = 'd';
s.append(f);
cout<<f.length()<<" "<<f<<" "<<f[0]<<endl;
cout<<s.length()<<" "<<s<<" "<<s[0]<<endl;
Output is :
0 d
0 d
Run Code Online (Sandbox Code Playgroud)
即使我改变s.length了s.size,结果也一样.为什么s[0] = 'd'和s.size() = 0;?
创建它们时,两个字符串都是空的,它们不包含任何字符.f[0]超出范围,访问空容器的任何元素是未定义的行为,因此任何事情都可以合法地发生.
你需要这样做
string f(1, 'd'), s; // creates f with 1 repetition of 'd'
s.append(f);
...
Run Code Online (Sandbox Code Playgroud)
要么
string f, s;
f += 'd'; // or f.push_back('d'), or f.append('d'), or...
s.append(f);
...
Run Code Online (Sandbox Code Playgroud)