【问题标题】:(C++) Seekg in fstream cutting off characters(C++) fstream 中的 Seekg 截断字符
【发布时间】:2015-05-04 23:03:35
【问题描述】:

所以我不完全确定为什么会这样。我试过在我正在读取的 txt 文件中的单词之前添加空格,它修复了一些问题,但不是全部。基本上我只是想返回一个名称,文件中的每个名称都在不同的行上。但是当我打印名字时,其中一些被切断了,比如“Dillon”将是“llon”或“Stephanie”将是“phanie”等等。以下是 seekg 的用法:

string Employee::randomFirstName()
{
    int i;
    string fName;

    i = rand() % 100;

    ifstream firstName;
    firstName.open("First Names.txt", ios::out); 
    firstName.seekg(i);
    firstName >> fName;

    return fName;

}

所以,我会发布 txt 文件,但它只是一个名称列表,每行一个,100 个。我已经尝试查找使用 seekg 的示例,但我似乎无法弄清楚为什么它会切断一些。此外,它只是有时会切断。一个输出它会打印出“Dillon”,接下来它会打印出“llon”。

任何帮助将不胜感激

【问题讨论】:

  • 如果您只是处理 100 个条目,请将文件的行读入向量中,然后您可以直接访问它们。
  • 我能做到,没想到哈哈谢谢!

标签: c++ string seekg


【解决方案1】:

istream::seekg() 将移动到 字符 位置。因此,寻找 0 到 99 之间的随机字符位置 (rand() % 100) 可能会出现在一行的中间。 seekg 无法知道您要查找行号:它没有行的概念。

您可以改为使用std::getline 达到i 的次数以到达该特定行。

【讨论】:

    猜你喜欢
    • 2014-08-16
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多