【发布时间】:2014-06-05 23:30:18
【问题描述】:
我正在尝试读取以argv[1] 命名的文件,但我不知道如何执行此操作。感觉好像很简单,编译的时候报错是,
main.cpp: In function ‘void* ReadFile(char**, int&)’:
main.cpp:43:22: error: request for member ‘c_str’ in ‘*(argv + 8u)’, which is of non-class type ‘char*’
make: *** [main.o] Error 1
这是我的代码:
#include "movies.h"
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
void *ReadFile(char*[], int&);
int size;
int main(int argc, char *argv[])
{
char * title[100];
cout << argv[1] << endl;
//strcpy(argv[1],title[100]);
//cout << title << endl;
ReadFile(argv , size);
return 0;
}
void *ReadFile(char * argv[] , int& size)
{
char data;
//char title[50];
//strcpy(title,argv[1]);
//cout << title << endl;
ifstream fin;
fin.open(argv[1].c_str()); //filename
if (fin.good())
{
fin >> data;
cout << data << " ";
while (!fin.eof( ))
{
fin >> data;
cout << data << " ";
}
}
}
【问题讨论】:
-
c_str()是std::string类的方法。char根本没有方法! -
完全一样的问题,甚至有文字
argv[1].c_str():Why should I use c_str() in functions -
不管怎样,为什么
size是一个全局变量,为什么要将所有程序参数传递给ReadFile,而不仅仅是文件名?
标签: c++ pointers file-io cstring