将字符串复制到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

回到顶部