while (cnt = fin.read(inbuf, BUF_SIZE))
の部分ですが、
invalid conversion from ‘void*’ to ‘int’
とエラーが出るので
while (cnt = (int)fin.read(inbuf, BUF_SIZE))
としたところ、今度は
invalid cast from type ‘std::basic_istream<char, std::char_traits<char> >’ to type ‘int*’
とエラーが出ます。
型が違うというのは分かるのですが、キャスト変換をしてもダメだったのでどう直していいのか分かりません。
エラーの無くし方を教えて下さい。
lang
1#include <iostream> 2#include <fstream> 3#include <cctype> 4 5#define BUF_SIZE 100 6 7using namespace std; 8 9int main(int argc, char *argv[]) 10{ 11 char ch; 12 char inbuf[BUF_SIZE]; 13 char outbuf[BUF_SIZE]; 14 // 読み込まれたカウント 15 int cnt; 16 // ループ用 17 int i; 18 19 if (argc != 3) { 20 cout << "使い方: CONVERT <入力ファイル名> <出力ファイル名>\n"; 21 return 1; 22 } 23 24 ofstream fout(argv[2]); // 出力ファイルを作成する 25 if (!fout) { 26 cout << "出力ファイルが開けません\n"; 27 return 1; 28 } 29 30 ifstream fin(argv[1]); // 入力ファイルを開く 31 if (!fin) { 32 cout << "入力ファイルが開けません\n"; 33 return 1; 34 } 35 36 // 入力ファイルから読み込む 37
while (cnt = fin.read(inbuf, BUF_SIZE)) {
// エラーの有無をチェック if (!fin.good() && !fin.eof()) { cout << "入出力エラー・・・終了\n"; return 1; } if (!fin.eof()) { // islowerは引数が小文字なら(真)を返す // 変換 for (i = 0;i <cnt ;i++) { if(islower(inbuf[i])) outbuf[i] = toupper(inbuf[i]); else outbuf[i] = tolower(inbuf[i]); } // 出力ファイルに書き込み fout.write(outbuf, BUF_SIZE); } } fin.close(); fout.close(); return 0; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/20 12:56