处理一些将(输出/输入)5个不同文件放在桌面上的代码。最后,将其归结为一个错误消息,即“错误< 23>:C2109:下标需要数组或指针类型”。它与myfile.open;我试过了 - >运营商。不完全是如何将它变成一个数组,如果这是我想要做的,因为我已经尝试将字符串变成char并发出警告。任何人都可以告诉我如何修改我的代码来纠正这个问题?我对C ++和编程比较陌生,只有几个月。
#include <iostream>
#include <fstream>
using namespace std;
struct pizza{
string FILENAMES[9];
};
int main ()
{
int i;
char FILENAMES;
pizza greg = {"file1.doc", "file2.doc", "file3.doc", "file4.doc", "file5.doc"};
cout << "Input is invalid. Program will end. " << "\n" ;
for (i = 0; i < 5; i++)
{
const char *path="/Desktop/Libraries/Documents" ;
ofstream myfile(path);
myfile.open (FILENAMES[i]) ;
myfile << "How you like math?\n" ;
myfile.close();
};
return 0;
}
您的建议有很多帮助,我的程序现已启动并运行。 (没有双关语,哈哈。)
答案 0 :(得分:2)
循环应该看起来像这样:
const char *path="/Desktop/Libraries/Documents";
for (int i = 0; i < 5; ++i)
{
std::string name(path + greg.FILENAMES[i]);
std::ofstream myfile(name.c_str());
if (myfile) {
myfile << "How you like math?\n" ;
}
else {
std::cerr << "ERROR: failed to open '" << name << "' for writing\n";
}
}
答案 1 :(得分:0)
char FILENAMES;
FILENAMES
不是数组。即使它是,你将不得不使它成为一个字符串数组或二维字符数组来做你想要的。
您可能打算访问greg
内的字段。
myfile.open (greg.FILENAMES[i]);