我可以写字符数组ch[n]而不是ch[10]

在我的 C++ 代码中,我想写字符数组 s[n] 而不是写 s[10]。其中 n 是 size 是数组,它由用户在运行时给出。但它不接受输入。它只取 n,而不是字符串。

我得到了这样的输出,

输入尺寸:10

输入字符串:

细绳 :

    #include<iostream>
    #include<cstring>
    using namespace std;

    int main()
    {
       int n;
       cout<<"Enter size : ";
       cin>>n;
       char s[n];
       cout<<"Enter String : n";
       cin.getline(s,n);
       cout<<"String : n";
       int l=strlen(s);
       cout.write(s,l);
       return 0;
    }

回答

cin.ignore()可用于修补的问题,因为在提到这个帖子:

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    int n;
    cout<<"Enter size : ";
    cin>>n; n++;
    char s[n];
    cout<<"Enter String : "; cin.ignore();
    cin.getline(s,n);
    cout<<"String : ";
    cout.write(s,n);
    return 0;
}

结果:

Enter size : 10
Enter String : 1234567890
String : 1234567890

*注:跑进来Code::Block 20.03, g++ version 6.3.0, Windows 10, 64 bit

但是,作为注释如上所述,VLAS或Variable Length Array(S)的在C ++标准的一部分,虽然 g++clang++编译器支持它们。

正如@Kevin Pastor 所指出的,最简单的方法是使用std::string它来完成所有数据分配工作。

样本:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string s; cout << "Your string: ";
    getline(cin, s);
    cout << "String: " << s;
}

示例输出:

Your string: 1234567890
String: 1234567890

这里有更多关于 VLA 的信息。


以上是我可以写字符数组ch[n]而不是ch[10]的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>