将字符串复制到C++中的另一个字符串并打印其字符?
我有一个小程序,我已经声明了两个字符串变量。我将输入字符串的第一个字母转换为大写字母,并将第一个字符串的内容复制到第二个字符串。但是,如果我尝试打印(m字符串的)内容,程序不会打印任何内容。你能告诉我为什么会发生?将字符串复制到C++中的另一个字符串并打印其字符?
#include <iostream> #include <string.h>
string n, m;
int main()
{
cin >> n;
char first_letter = n.at(0);
char f = toupper(first_letter);
n[0] = f;
for(int s = 0; s < n.length(); s++) {
m[s] = n.at(s);
}
for(int p = 0; p < m.length(); p++) {
cout << m[p] << endl;
}
}
回答:
为什么这么复杂? 我假设您使用的是std::string
。
#include <iostream> #include <string>
std::string n,m;
int main(){
std::cin>>n;
n[0] = std::toupper(n.at(0));
m = n;
std::cout << m << std::endl;
}
的at()
函数执行运行时检查,如果该索引超出范围的或没有。 operator[]
没有。
回答:
没有打印的原因是你的m
-string的长度为零。在第一个循环中,您基本上正在写入未分配的内存,并且不会将新值附加到m
的末尾。
回答:
字符串 “M” 是使用std的默认构造函数建:: string的
http://en.cppreference.com/w/cpp/string/basic_string/basic_string
默认构造函数。构造空字符串(零大小和未指定的容量)。
第二环路不是由程序处理的(因为m.length()= 0)
以上是 将字符串复制到C++中的另一个字符串并打印其字符? 的全部内容, 来源链接: utcz.com/qa/266201.html