在c++中赋值两个字符数组


#include <bits/stdc++.h>
using namespace std;
int main(){
    char a[100];
    char c[1];
    cin >> a;
    c[0] = a[8];
    cout << c;
}

输入:asdfghjklmn
输出:lasdfghjklmn

我不明白它是怎么赋值的

#include<bits/stdc++.h>

没有。这个头文件是非标准的,不可移植的,会导致可怕的编译时间,并且是一种来自"竞争"的坏习惯。为沉迷于坏习惯的网站编码。#include <iostream>(即,仅包括您实际使用的内容)在所有方面都会更好。

using namespace std;

也被认为是不好的做法。尽量保持你的命名空间最小。

int main(){
    char a[100];

。不喜欢。<string>存在。char[]是一个向后兼容的C字符串。在c++中,字符串"是std::string对象。没有什么"精英"。关于在c++代码中使用C结构,只是有很多潜在的错误和错误。

    char c[1];
    cin>>a;
    c[0]=a[8];

您不检查a实际上在该索引处有字符…

    cout<<c;
}

c不是(并且,由于它的一个字节大小,不能)以空结束,即不是字符串。然而cout << c将其视为一个字符,并将继续从内存中打印字符,直到它达到零字节;你看到的是未定义行为。在这种情况下,c位于a之前的内存中,因此您看到ca随后打印,但这无法保证。在实际使用该语言时完全避免的事情之一,即<string>

#include <iostream>
#include <string>
int main()
{
    std::string a;
    std::string c;
    std::cin >> a;
    if ( a.length() > 8 )
    {
        c.push_back( a[8] );
    }
    std::cout << c;
}

给你。

最新更新