【发布时间】:2015-06-10 12:47:14
【问题描述】:
只是为了好玩而尝试编程测试。它规定我应该逐个阅读文件的每个单词。
它暗示我可能想使用 ifstream,但 不会让我使用 std::string,所以看起来我必须使用 char*
在 C 语言中,我会逐行阅读并使用 strok(),因为我有多个分隔符(空格、引号、括号等)。
什么是最 C++ 的方式来做到这一点 - 一个接一个地得到单词 - 不使用 std::string ?
【问题讨论】:
只是为了好玩而尝试编程测试。它规定我应该逐个阅读文件的每个单词。
它暗示我可能想使用 ifstream,但 不会让我使用 std::string,所以看起来我必须使用 char*
在 C 语言中,我会逐行阅读并使用 strok(),因为我有多个分隔符(空格、引号、括号等)。
什么是最 C++ 的方式来做到这一点 - 一个接一个地得到单词 - 不使用 std::string ?
【问题讨论】:
首先,您必须确保为您的字符串分配了内存(这部分将由std::string 自动处理)。然后只需使用普通输入运算符>>,因为它将在空格处分隔。
不要忘记释放您分配的内存(也由std::string 自动处理)。
要学习的经验:使用char 指针进行此类练习,否则使用std::string。
【讨论】:
std::string.
只需将文件读入std::string,然后使用std::string::c_str ( ) 从std::string 对象中检索以nul 结尾的C 样式字符串。
【讨论】:
std::istream& std::istream::geline ( char *, streamsize ) 或循环int std::istream::get ( ) 来检索当时的单个字符。还有其他解决方案,但我认为这两个是最好的。