问题描述
|
这是我的代码。在我叫ѭ0the的那一行上,我不断出错。我正在尝试使用定界符:
char* spamdir = argv[1];
char* hamdir = argv[2];
char* dictname = argv[3];
ofstream* outp = new ofstream;
ifstream* read = new ifstream;
DIR *sdp = opendir(spamdir);
struct dirent *directory;
char* word = (char*)malloc(256);
while(directory = readdir(sdp))
{
cout << directory->d_name << endl;
char* name = directory->d_name;
char* filepath = (char*) malloc(100);
strcpy(filepath,\"\\0\");
strcat(filepath,spamdir);
strcat(filepath,\"/\");
strcat(filepath,name);
read->open(filepath);
if(read->good())
cout <<\"sweet\\n\";
while(read->good())
{
read->get(word,255,\" \");
cout << word << endl;
}
read->close();
free(filepath);
}
解决方法
您没有告诉我们错误是什么,但是我的猜测是,问题在于
std::istream::get()
中的定界符参数必须为char
,但是您正在传递字符串。尝试使用\' \'
代替\" \"
。
一种更简单的方法是使用std::getline()
,如下所示:
std::string word;
while (std::getline(*read,word,\' \')) {
std::cout << word << std::endl;
}
每当您在C ++程序中使用malloc
时,您可能都在艰难地工作。
(顺便说一句,每当您有编译器错误消息时,最好将这些消息包括在您的问题中。)