【问题标题】:Read an ifstream word for word into char*将 ifstream 逐字读入 char*
【发布时间】:2015-06-10 12:47:14
【问题描述】:

只是为了好玩而尝试编程测试。它规定我应该逐个阅读文件的每个单词。

它暗示我可能想使用 ifstream,但 不会让我使用 std::string,所以看起来我必须使用 char*

在 C 语言中,我会逐行阅读并使用 strok(),因为我有多个分隔符(空格、引号、括号等)。

什么是最 C++ 的方式来做到这一点 - 一个接一个地得到单词 - 不使用 std::string ?

【问题讨论】:

    标签: c++ char ifstream


    【解决方案1】:

    首先,您必须确保为您的字符串分配了内存(这部分将由std::string 自动处理)。然后只需使用普通输入运算符>>,因为它将在空格处分隔。

    不要忘记释放您分配的内存(也由std::string 自动处理)。

    要学习的经验:使用char 指针进行此类练习,否则使用std::string

    【讨论】:

    • 我不允许使用 std::String
    • @Mawg 就像我在回答中所说的那样,当您开始真正编写代码时(或者没有其他任何内容)then 使用std::string.
    【解决方案2】:

    只需将文件读入std::string,然后使用std::string::c_str ( )std::string 对象中检索以nul 结尾的C 样式字符串。

    【讨论】:

    • 我不允许使用 std::String
    • 您有很多可能的解决方案,您可以使用std::istream& std::istream::geline ( char *, streamsize ) 或循环int std::istream::get ( ) 来检索当时的单个字符。还有其他解决方案,但我认为这两个是最好的。
    猜你喜欢
    • 2011-05-21
    • 1970-01-01
    • 2017-01-20
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2014-07-23
    • 2011-10-03
    相关资源
    最近更新 更多