【发布时间】:2013-02-22 17:03:59
【问题描述】:
我的输入文件是这样的:
C:\Users\DeadCoder\AppData\Local\CoCreate
我正在制作一棵树,我需要在使用 \ 分隔符从输入文件读取时抽象目录名称。和上面的例子一样,我需要分别抽象出c:、users、DeadCoder、Appdata ....希望大家理解问题。
现在让我们看看我们得到的选项。
1- istringstream 适用于 whitespace 但不适用于 \。
2- strtok() 作用于 char。所以我必须将我的字符串更改为 char,我真的不想这样做。
3- Boost Tokenizer()这个看起来很有趣,我过去对它并不熟悉,只是我刚刚在谷歌上搜索了一下。我复制了代码,是这样的:
#include <boost/foreach.hpp>
#include <boost/tokenizer.hpp>
using namespace boost;
int main(){
string tempStr;
ifstream fin;
fin.open("input.txt");
int i=0;
while (!fin.eof()){
getline(fin,tempStr);
char_separator<char> sep("\"); // error: missing terminating " character
tokenizer<char_separator<char>> tokens(tempStr, sep);
for (const auto& t : tokens) {
cout << t << "." << endl;
}
}
现在这给出了"error: boost/foreach.hpp: No such file or directory" 的错误
有人可以在这里帮助我。还有其他better way 可以用\ delimiter 读取输入文件吗?请不要使用像class tokenizer() 这样的大量代码,因为我还在学习c++。
编辑:我没有安装 boost 库,因此我遇到了这个错误。如果有人可以在不安装第三个库的情况下解释tokenize 字符串的更好方法,那将是非常受欢迎的。
最好的; 死编码器。
【问题讨论】:
-
你安装
Boost库了吗? -
不。不是默认在那里吗?
-
这是一个第三方库。从boost.org下载它
-
好吧好吧。有没有其他方法可以完成这项任务,我的意思是我不必添加任何第三个库。
-
是的。从文件中读取该行。根据分隔符对字符串进行标记。将标记存储在 std::vector<:string> 中。有关参考,请参阅此线程。 stackoverflow.com/questions/53849/…
标签: c++ stringtokenizer boost-tokenizer