在 C++ 中,我通过从另一个已经初始化的字符串(字符串类)复制字符索引来创建一个新的字符串(字符串类)。
但我无法使用cout
. 使用c_str()
我可以使用cout
. 但不是c_str()
只在使用时才需要,printf()
因为它需要交流类型的字符串?
#include <cstring>
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int i;
string a,b;
cin>>a;
for(i=0;a[i]!='\0';i++){
b[i]=a[i];
}
cout<<b;
return 0;
}
编辑:感谢您的帮助!但是我的问题可能不太清楚,所以这些是我遇到的主要问题。请阅读以下内容,如果您能进一步帮助我,那就太好了!(另外,我理解b=a;
是最简单的分配方法,但我试图理解字符串,因此是问题。)
a)我不知道cpp字符串何时为空终止,何时不是,但在这种情况下,初始化后的a字符串为空终止,因为循环结束并且它在字符串a的最后一个字符之后结束,因为从出来循环并cout<<a[i];
打印 a 的最后一个字符。
b) 在循环中,在我包含cout<<b[i];
它的赋值之后,打印出我们期望的值刚刚分配给 b[i]。所以 b[i] 确实存在一些奇怪的原因。
c)在for循环之外,在程序结束时,当我cout<<b[2];
打印字符串的第三个字符时。如果我这样做cout<<b.c_str();
,它会打印出整个字符串。只有当我这样做时cout<< b;
,才会打印任何内容。为什么是这样?