C++ 路径字符串连接问题
请看下面我的代码C++ 路径字符串连接问题,c++,string,C++,String,请看下面我的代码 ifstream myLibFile(“libs//%s”,第行);//此处编译失败??? 我想合并路径字符串并再次打开相关文件 #include <iostream> #include <fstream> #include <string> using namespace std; int main () { string line; ifstream myfile ("libs//Config.txt"); // The
ifstream myLibFile(“libs//%s”,第行);//此处编译失败???
我想合并路径字符串并再次打开相关文件
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string line;
ifstream myfile ("libs//Config.txt");
// There are several file names listed in the COnfig.txt file line by line.
if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,line);
cout << line << endl;
// Read details lib files based on the each line file name.
string libFileLine;
ifstream myLibFile ("libs//%s" , line); // Compile failed here ???
if (myLibFile.is_open())
{
while (! myLibFile.eof() )
{
cout<< "success\n";
}
myLibFile.close();
}
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
ifstream
构造函数不是那样工作的。它的第一个参数是要打开的文件的C字符串。它的第二个参数是一组可选的模式标志
如果要连接这两个字符串,只需连接这两个字符串:
std::string myLibFileName = "libs/" + line;
ifstream myLibFile(myLibFileName.c_str());
// Or, in one line:
ifstream myLibFile(("libs/" + line).c_str());
(对
c_str()
的调用是必需的,因为ifstream
构造函数采用的是const char*
,而不是std::string
)ifstream
构造函数不是这样工作的。它的第一个参数是要打开的文件的C字符串。它的第二个参数是一组可选的模式标志
如果要连接这两个字符串,只需连接这两个字符串:
std::string myLibFileName = "libs/" + line;
ifstream myLibFile(myLibFileName.c_str());
// Or, in one line:
ifstream myLibFile(("libs/" + line).c_str());
(需要调用
c_str()
,因为ifstream
构造函数采用的是const char*
,而不是std::string
)读取循环不正确;您可以阅读以下文章来解释为什么您的方法不正确以及如何正确读取:您的读取循环不正确;您可以阅读以下文章来解释方法不正确的原因以及如何正确阅读:请注意,如果您想要更高级的格式,可以使用boost格式:boost.format(“libs/%1.%2.%3”)%line%majorVersion%minorVersion
。Boost格式不需要%s
,它会自动检测参数类型。但是,如果您想要更高级的格式,可以使用Boost格式:Boost.format(“libs/%1.%2.%3”)%line%majorVersion%minorVersion
。Boost格式不需要%s
,它会自动检测参数类型。