在C ++中将字符串复制到另一个字符串并打印其字符?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++中将字符串复制到另一个字符串并打印其字符?相关的知识,希望对你有一定的参考价值。

我有一个小程序,我已经声明了两个字符串变量。我将输入字符串的第一个字母转换为大写字母,然后将第一个字符串的内容复制到第二个字母。但是,如果我尝试打印其内容(m字符串),程序将不打印任何内容。你能告诉我为什么会这样吗?

#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 ++中将字符串复制到另一个字符串并打印其字符?的主要内容,如果未能解决你的问题,请参考以下文章

在C中将字符数组打印为十六进制

如何在iOS(目标C)中将字符从一个位置修剪到另一个位置?

如何在 C++ 中将字符串转换为字符? [复制]

c语言中如何将字符串转化成整数型并输出?

在Java中将字符串集合复制到另一个字符串的时间复杂度

MongoDB+C#+IQueryable - 有一个字符串数组以及如何在 Where 子句中将其加入 Mongos 集合