C++ 从std::string向量返回字符

C++ 从std::string向量返回字符,c++,string,c++11,popen,C++,String,C++11,Popen,如何传递popen数据? 我使用了一个脚本,但每当我尝试将数据引入另一个函数时,我都会遇到一个转换错误->从字符串常量到“char*”的不推荐的转换,因为popen希望使用标准char 代码: #包括 #包括 #包括 #包括 使用名称空间std; 文件*init(char*fname){ 文件*fp=popen(fname,“r”); 返回fp; } char getmarketbuyData(文件*fp){ 字符buff[BUFSIZ]; 矢量记录; while(std::fgets(buff

如何传递popen数据? 我使用了一个脚本,但每当我尝试将数据引入另一个函数时,我都会遇到一个转换错误->从字符串常量到“char*”的不推荐的转换,因为popen希望使用标准char

代码:

#包括
#包括
#包括
#包括
使用名称空间std;
文件*init(char*fname){
文件*fp=popen(fname,“r”);
返回fp;
}
char getmarketbuyData(文件*fp){
字符buff[BUFSIZ];
矢量记录;
while(std::fgets(buff,sizeof buff,fp)!=NULL){
尺寸n=std::strlen(浅黄色);
如果(n&&buff[n-1]='\n')buff[n-1]='\0';
if(buff[0]!='\0')v记录。推回(buff);
}
对于(int t=0;tcout在
main
中调用
init
时出现错误。字符串literal
“/usr/bin/php getMyorders.php 155”
具有类型
const char*
,调用init需要隐式转换为
char*
。这种转换(对于字符串literal)是允许的,但现在不推荐使用

popen
的第一个参数的类型为
const char*
,因此我看不出
init
需要非const参数的原因。将其声明为

FILE *init( const char *fname )

消除警告。

如果不修改
fname
,请将其设置为
const
。不要强迫该函数的用户解决const不正确的问题。
FILE *init( const char *fname )