【发布时间】:2015-03-23 23:00:12
【问题描述】:
这里有很多关于发布字符串的帖子,但实际上似乎不符合我的目的。
我正在使用std::string 和所有 C++ 标准库,并且我有一个使用以下协议的文本文件:
TEXT1:TEXT2-TAB-TEXT3:TEXT4 TEXT5
当-TAB- 是\t。
我想把所有的文本变成字符串(也可以是一个数组)。文件中的所有行都是这样写的,我尝试使用istringstream,但它没有任何功能,例如:iss >> text1 >> ":" >> text2 >> "\t" >> text3 >> ":" >> text4 >> " " >> text5。
我真的需要使用find等的基本功能进行解析吗?那只是大量的工作(因为我有几个以不同格式编写的文件,我需要为所有这些文件创建一个通用函数),但如果我别无选择,我会这样做。
那么...有没有办法通过以下方式解析字符串,使用字符串之间的已知字符?它不是一个特定的分隔符,因为每一行都包含几个分隔符(一次是空格,然后是冒号等等)。我想使用 C++ 标准库,而不是 Boost 等任何外部库。
编辑: C++11。
【问题讨论】:
-
我们至少可以假设哪个 C++ 标准? C++11? C++14?
-
@PaulR C++11,我的错。
-
所呈现的分隔符的order 是强制性的吗?即,您希望 exactly 一个冒号,然后是一个制表符,然后是一个冒号,然后是一个空格,然后是最后一个标记?即使在通用解决方案中,它也可以采用任何一种方式,但这需要更多的工作。
-
你可以写一个助手,让你写出类似
iss >> num1 >> expect('\t') >> num2;的东西