在C ++中读到一行的结尾

时间:2011-10-24 05:30:13

标签: c++ file

我有一个这样的文本文件:

  

Sting Another string 0 12 0 5 3 8
  Sting Another string 8 13 2 0 6 11

我想知道有多少号码。我认为我最好的选择是使用while类型循环,条件结束计数然后另一行开始,但我不知道如何在一行结束时停止阅读。

提前感谢您的帮助;)

3 个答案:

答案 0 :(得分:11)

input信息流拆分为行

std::string line;
while (std::getline(input, line))
{
  // process each line here
}

要将一行拆分为单词,请使用stringstream:

std::istringstream linestream(line); // #include <sstream>
std::string word;
while (linestream >> word)
{
  // process word
}

您可以为每个单词重复此操作以确定它是否包含数字。由于您没有指定数字是整数还是非整数,我假设int

std::istringstream wordstream(word);
int number;
if (wordstream >> number)
{
  // process the number (count, store or whatever)
}

免责声明:这种做法并不完美。它会检测像123abc这样的单词开头的“数字”,它还会允许输入格式string 123 string。这种方法效率也不高。

答案 1 :(得分:4)

为什么不使用getline()

答案 2 :(得分:1)

行尾由'\ n'字符表示。 在遇到'\ n'

时,在while循环中放入一个条件