取消引用字符串数组元素c

时间:2013-04-07 23:45:05

标签: c++ string pointers fstream

我有一个字符串数组,在循环中,我想做这样的事情:

fstream in(fileNames[i], ios::in);

但这不起作用。虽然,当我尝试:

fstream in("some string",ios::in);

它有效。

我怎么能完成同样的事情,但是有一个数组元素?

2 个答案:

答案 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细分为较小的字符串sometextgoes,{{1如下所示

here