使用参数char *从文件读取

时间:2014-04-29 00:34:18

标签: c++ char

我正在使用一个使用char *参数的函数;我正在从一个文件中读取输入。这是我的代码:

std::ifstream infile("file.txt");
std::string line;
while(std::getline(infile,line)){
    if(pass(line.c_str())==0) cout<<"this is correct"<<line<<endl;
}        

传递函数是

int pass(char* a);
//compares c_string to hidden c_string
//if the same then return 0, else retuns -1

我正在使用g ++ -c 6.cpp进行编译,错误是:

从'const char *'无效转换为'char *'

初始化'int pass(char *)

的参数1

3 个答案:

答案 0 :(得分:0)

更改为:

int pass(const char* a);

答案 1 :(得分:0)

当您转换std::string时,c_str()会转发const char*而不是char*,因此您必须将该功能重新定义为int pass(const char*);

如果您希望将std::string直接转换为char*

const char *ptr = str.c_str() ;
char *new_str = new char[str.size()+1];  //+1 for null ending char
strcpy(new_str, str.c_str());

str的内容复制到char*数组new_str

答案 2 :(得分:0)

这样称呼:

if ( !line.empty() && pass(&line[0]) )
     cout << "this is correct" << line <<endl;

您必须检查empty line[0]仅在其中包含字符时才有效。

如果你确定pass没有尝试写字符串,你也可以去:

pass( const_cast<char *>(line.c_str()) );