ループ内にファイル名を作成するためのC++コードを記述しました。次のように私のサンプルコードがあるC++でファイルを開くときにエラーが発生する
input0.txt, input1.txt,......., input7.txt
:
#include<iostream>
#include<cstdio>
#include<string.h>
#include<stdlib.h>
#include<fstream>
#include <sstream>
using namespace std;
std::string to_string(int i) {
std::stringstream s;
s << i;
return s.str();
}
int main()
{
FILE *fp;
int i=0;
string fileName;
string name1 = "input";
string name2 = ".txt";
while(i<=7)
{
fileName = name1+ to_string(i)+ name2;
cout<<fileName<<"\n";
fp=fopen(fileName,"r");
i++;
}
}
しかし、私は、コードを実行したとき、私は取得しています例えば、私は次のように8回のループを実行し、8つのテキストファイルを作成します。次のエラー:
error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'FILE* fopen(const char*, const char*)'
コードに問題はありませんか?解決策は何ですか?
'fopen(filename.c_str()、" r ")'はあなたの問題を解決します。 – muXXmit2X
** C++ 11 **、I/Oストリームを使用し、 'to_string'実装も削除できます。 – LogicStuff
また、コードに '#include'はありません。コンパイラの実装に依拠して、このヘッダを指定せずにこのヘッダを提供します。このヘッダが含まれる保証はありません。 –
PaulMcKenzie