如何使用循环C ++读取未知数量的字符串

时间:2013-11-28 06:02:20

标签: c++ string loops

void getFileName(ifstream& inData)
{   

string filename;

cout << "please enter the location of the file you wish to input: " << endl;
getline(cin, filename);

inData.open(filename.c_str());

if (!inData)
{cout << "there was an error with the file you entered" << endl;
exit(0); }
}

所以我打开了我的文件,但是我需要它来读取未知数量的字符串 我需要在这个函数中计算这些字符串,然后计算下一个函数中的每个字符。我习惯于做一些像

这样的事情
  

inData&gt;&gt; s1&gt;&gt; s2&gt;&gt; s3&gt;&gt; ECT .....

这是我第一次使用未知数量的数据。我不确定我是否需要将其作为一个大文件读取然后返回并计算单词和字符,或者如果我需要逐字符串地读取它。

非常感谢任何帮助或指导。

4 个答案:

答案 0 :(得分:1)

while(getline(tmp,inData) != EOF)
    count++;

答案 1 :(得分:1)

这里的关键问题是你所谓的“下一个功能”。你需要读取所有字符串,然后在给出你读过的所有字符串之后调用下一个函数吗?或者你需要多次调用下一个函数,每次用你读过的一个字符串调用它?

如果它是前者,则需要将所有字符串保存在矢量中,如果是后者则不需要矢量。

这是矢量版本

vector<string> v;
string s;
while (inData >> s)
    v.push_back(s); // save the string in the vector
cout << "the count of strings is " << v.size() << '\n';
the_next_function(v);

查看the_next_function仅被调用一次的方式。使用向量将为您计算字符串,使用向量size()方法获取字符串数。

这是非矢量版本

string s;
while (inData >> s)
{
    the_next_function(s);
}

这次多次调用the_next_function

答案 2 :(得分:0)

我注意到这是作业。

然而,这是一个&#34; nudge&#34;:Reading text files with C++

答案 3 :(得分:0)

可以使用standard algorithm函数之一轻松完成此操作,即std::copy。您可以将其与iterator helpersstd::istream_inserter {/ 3}} std::back_inserter一起使用。

使用上述内容将std::string放入std::vector。可以通过vector size找到单词数。