将数据输入两个字符串
Input data into two strings
假设我们有一个针对C 的输入流。它包含一本书列表,上面有发行日期,然后命名。输入数据中的一行看起来像这样。
Book title here Month Day, Year
我想将书籍标题放入一个字符串中,然后在另一个字符串中发行的那一年。因此string foo = Book title here ;
和string bar = Month Day, Year;
,但是如果您只做data >> string
,它将只能升至下一个空格。其中foo将是 foo = Month
,bar为 bar = Day,
。getline获得了整个行,foo将成为 foo = Month Day, Year Book title here
,而bar成为下一行或知道什么。
我该如何处理?
对于此类工作,最好使用逗号分隔的值,其中每个要读取的元素都由您选择的符号分开,例如';'
。
Book title here;Month Day, Year
然后您可以使用
读取文件std::string title, date;
std::getline(yourFile, title, ';');
std::getline(yourFile, date);
getline()
的第三个参数指定用作字符串分离器的符号。
希望它有帮助
当基于行的格式变得复杂以解析开始完成时,最好预先阅读整个行,然后更详细地分析行内容。
您的问题似乎就是这种情况,因为您不知道您是否阅读了书名或书籍日期的一部分,除非有定义的定界符或您达到了终点。考虑以下示例行:
"Book Horror Story September 11, 2001"
"Book Horror Story September 11, 2001 October 12, 2019"
如果您解析本文左右,则无法知道" 2001年9月11日"是标题的一部分还是日期的一部分,直到您到达行结束。
因此,您从std::getline
开始,以将整行读取为字符串,然后从每行提取详细信息。您可以按照@SomeProgrammerDude的评论,通过手动解析左线的行,通过开发一个正则表达式,该正则表达式接受行格式或使用任何其他适当的技术。
相关文章:
- 两个字符串在 c++ 中不相等
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 比较两个字符串后卡在无限循环中
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 使用XOR查找O(n)-解决方案中的两个字符串是否为变位符
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 两个字符串之间的数学运算
- sscanf() 有两个字符串参数
- 我的字符串数组一次打印出前两个字符串
- 两个 c++ 字符串上的异或
- 函数返回两个字符串的第一个常用字符
- 目标是找到两个 c 字符串之间的公共前缀(必须使用特定的函数标头)
- 我需要在C++的两个字符串之间找到共同的前缀
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 给定两个字符串 S 和 T.确定与 T 相差最小的 S 子字符串?
- gtest:检查字符串是否等于两个字符串之一
- 交换两个字符串时访问正确的内存时,我遇到了分段错误
- 我可以在系统()中使用两个字符串吗?