-3

連結された文字列引数をsystem()関数に渡す方法は?

  • 私は使っているGCC 4.5.2
  • getをstd::string実行しshell、その出力を外部ファイルに書き込む必要があります。
  • system()このタスクを実行するために関数を使用します。

char*引数のみを渡すことができ、引数を渡すことができなかったため、この関数の実行を実行できませんでしたstd::string

これが私のコードです..

#include<iostream>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>

using namespace std;

void getch()
   {
   int c;
   fflush(stdout);
   while ((c = getchar()) != '\n' && c!= EOF) { /* Do Nothing */ }
   }

int main()
{
string optTechniques[] = {
        "-fauto-inc-dec", "-fcprop-registers", "-fdce",
        "-fdefer-pop", "-fdelayed-branch", "-fdse",
        ........,   .....,  ......
         }
string str;
str="gcc -Wall "+optTechniques[i]+" -o output";
cout<<"\n"<<str<<"\n";  /* Here it prints correctly */
system(str);    /* This is generating error. */
string val;
system("sh execTime.sh");

ifstream readFile("output.log");
readFile>>val;  /* Works perfectly if execution is done. */
float execTime=strtof(val.c_str(),NULL);    /* Converts the string to float */

getch();

cout<<"\nExecution Time: "<<execTime<<"\tTechnique: "<<optTechniques[i]<<"\n";
return 0;
}

更新: ありがとう。私は答えを得ました。

4

1 に答える 1

4

:を使用して、文字列から char ポインターを取得しc_strます。

system(str.c_str());  
于 2013-01-07T14:47:01.057 に答える