連結された文字列引数を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;
}
更新: ありがとう。私は答えを得ました。