我可以写字符数组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 的信息。