我寫了一個C++代碼來在循環中創建一些文件名。例如,我將運行循環八次創造8個文本文件,如:嘗試在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++;
}
}
但是,當我運行代碼,我得到出現以下錯誤:
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