我正在使用一个使用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答案 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()) );