C++ 对字符数组大小使用整数变量
我正在尝试使用fstream读取文本文件,然后将字符串转换为字符数组。但是,当我创建一个整数“n”即字符串的大小加1时,我不能用它来初始化数组的大小。我收到一条消息说,“表达式必须有一个常量值。” 我试图读取的文本文件只是说,“这是一条消息”。它有17个字符长。当我输入数字18(char messageArray[18])时,一切正常。但我希望能够根据我的短信长度传递一个值C++ 对字符数组大小使用整数变量,c++,arrays,string,io,fstream,C++,Arrays,String,Io,Fstream,我正在尝试使用fstream读取文本文件,然后将字符串转换为字符数组。但是,当我创建一个整数“n”即字符串的大小加1时,我不能用它来初始化数组的大小。我收到一条消息说,“表达式必须有一个常量值。” 我试图读取的文本文件只是说,“这是一条消息”。它有17个字符长。当我输入数字18(char messageArray[18])时,一切正常。但我希望能够根据我的短信长度传递一个值 #include <iostream> #include <fstream> #include &
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
using namespace std;
int main() {
// Read the message text file and save it to a string
fstream newfile;
string message;
newfile.open("input.txt", ios::in);
if (newfile.is_open()) {
getline(newfile, message);
newfile.close();
}
// Convert the message string to an array of characters
int n{};
n = message.size() + 1;
char messageArray[n];
strcpy_s(messageArray, message.c_str());
cout << messageArray << endl;
return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
//读取消息文本文件并将其保存为字符串
fstream新文件;
字符串消息;
open(“input.txt”,ios::in);
if(newfile.is_open()){
getline(新文件、消息);
newfile.close();
}
//将消息字符串转换为字符数组
int n{};
n=message.size()+1;
字符消息数组[n];
strcpy_s(messageArray,message.c_str());
CUT不能这样做。数组变量的大小必须是C++中的编译时常数。
您也不需要这样做。message
已经拥有一个以null结尾的动态数组。不需要将其复制到其他地方。如果需要字符串的副本,请创建另一个std::string
对象。C/C++中数组的大小必须是编译时常量。您应该动态分配缓冲区,或者只使用std::向量。从文件读取的代码只读取一行。这是你的意图吗?@ USE7860670。C中的数组大小不需要编译时间常数。这个问题是关于C++的。@ ErReka NoviaC方言(可选)VLA支持不是C。@user7860670 VLA支持在C99中不是可选的。它在以后的C标准中可能是可选的,但无论是否可选,它仍然是标准C。这是有道理的。谢谢!