2017-05-20 14 views
0

これよりも明らかな疑問が残っていますkeep keep私はまだC++を学ぼうとしているプログラマーの一種であることを覚えておいてください...明白な間違いがあれば私には簡単に行きます。バックアッププログラム(C++)を書き込もうとしているときに、型 'int(const char *)'と 'const char [11]'のオペランドがバイナリ 'operator <<'に無効です

私は、オペレータが望むどんなファイル/ディレクトリのバックアップを作成するプログラムをプログラムしようとしていますが、私は奇妙なエラーが発生し続けます。私は< <の代わりに+を使用しようとしました(私は新人移籍を知っていますが、あなたは決して知らない)。私もstd :: stingを設定しようとしましたが、似たようなエラーが出ました(私はほとんど何も試しませんでしたが、私はまだそれを固定していないので、すべてがそうではありません)。ここで

はコードです:

#include <iostream> 
#include <cstdlib> 
#include <string> 
using namespace std ; 
int main() 
{ 
     char name ; 
     char named ; 
     std::cout << "This program will create a backup of whatever directory you would like. Please enter what you would like the backup to be named: " 
     std::cin >> name ; 
     std::cout << "Now please enter what directory you wold like to be backed up (Example: /bin/bash): " ; 
     std::cin >> named ; 
     system << "tar -zcvf " << name << "tar.gz " << named ; 
return 0 ; 
} 

そして、これは私が受信し続けるエラーです:

backup.cpp: In function ‘int main()’: 
backup.cpp:12:12: error: invalid operands of types ‘int(const char*)’ and ‘const char [11]’ to binary ‘operator<<’ 
    system << "tar -zcvf " << name << "tar.gz " << named ; 

(私は休憩を追加する必要があります知っているが、この時点で、私はそれ{上の方法過去の午前今のところ})

非常に簡単な間違いや修正がありましたが、私はこれを学ぶのに最適な方法を見つけました。

+0

[ 'システム()'](http://en.cppreference.com/w/cpp/utility/program/system)は*の関数です。 IOストリームではありません。 – WhozCraig

+1

これは、 'system'を呼び出すエレガントな方法だと言います。電話をかけるために文字列を作成することを迷惑にならないようにします。ファイルを開くときにも便利です。 – user4581301

答えて

1

あなたは、あなたのプログラムで複数の問題があります。

  • 行の1つには、;がありません。
  • 文字列の読み取りにはstd::getlineを使用する必要があります。
  • namenamedの変数は、stringsではありません。
  • std::systemは、コマンドライン文字列引数をとる関数です。例えば

#include <iostream> 
#include <cstdlib> 
#include <string> 

using namespace std; 

int main() 
{ 
    string name; 
    string named; 
    std::cout << "This program will create a backup of whatever directory you would like." 
     "Please enter what you would like the backup to be named: "; 
    std::getline(cin, name); 
    std::cout << "Now please enter what directory you wold like to be backed up" 
     " (Example: /bin/bash): "; 
    std::getline(cin, named); 
    std::system(("tar -zcvf " + name + "tar.gz " + named).c_str()); 
    return 0; 
} 
0

systemは、const char*パラメータを受け取り、>>および<<演算子を使用するストリームではない関数です。

あなたが一緒に文字列を結合し、そのようにそれを呼び出すことができます。

system((((string("tar -zcvf ") += name) += "tar.gz ") += named).c_str()); 
関連する問題