我有一个字符串数组,在循环中,我想做这样的事情:
fstream in(fileNames[i], ios::in);
但这不起作用。虽然,当我尝试:
fstream in("some string",ios::in);
它有效。
我怎么能完成同样的事情,但是有一个数组元素?
答案 0 :(得分:1)
在旧的C ++中,你必须将char const *
传递给fstream构造函数,所以说:
fstream in(fileNames[i].c_str(), ios::in);
// ^^^^^^^^
在C ++ 11中,不再需要这样做了。
答案 1 :(得分:0)
我不确定filenames
的定义是什么,因为问题中没有引用它。在您的评论string fileNames[NUMTABLES]; filenames = "some text goes here;
中,string
似乎与char
相似。为了创建fstream
对象,我们需要传递char *
,从上述定义开始,filenames[i]
转换为可能导致问题的简单char
。
要解决此问题,请查找示例代码,其中字符串数组定义如下,fstream
对象创建成功,没有任何问题。
char filenames[4][32] = {"Just for testing purposes", "This is for stackoverflow", "Just for enabling", "This is nice program"};
fstream in(filenames[2], ios::in);
另一种方法可能是使用strtok
将您的字符串some text goes here
细分为较小的字符串some
,text
,goes
,{{1如下所示
here